对于我正在开发的项目,我必须在c#asp.net web api 2中创建一个Web服务。现在,我有一个基本的Web服务,当客户端调用它返回json的服务。这是我有:如何检查客户端是否已收到所有数据
ProductController的
public class ProductController : ApiController
{
public List<Dictionary<string, object>> Get()
{
ProductRepository er = new ProductRepository();
return getDataRows(er.getModifiedProducts());
}
private List<Dictionary<string, object>> getDataRows(DataTable dt)
{
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
string output = Regex.Replace(Convert.ToString(col.ColumnName), "[.]", "\\.");
row.Add(output, Convert.ToString(dr[col]));
}
rows.Add(row);
}
return rows;
}
}
当客户端确实给服务的调用,它会修改所有产品。当客户端收到所有数据时,我想更新产品状态,以便当客户端进行第二次呼叫时,第一次呼叫的产品不再发送。 在服务可以执行更新之前,必须确保客户端已收到完整的数据集。我正在想一个回调的东西,但我不知道从哪里开始。你能给我一些指点吗?
其相当简单。我的意思是,为什么你需要检查客户是否收到数据?他们将在您执行getDataRows()调用时收到它。如果他们没有,那么它可能会是一些http协议级别的错误(或者从你的代码抛出的异常)。在返回它之前,您需要有一些逻辑来查看它已发送,并且不要将它包含在下一个请求中。或者,客户可能希望发回先前请求的响应代码,但您需要通过发送一些令牌来唯一标识客户端/呼叫来追踪此响应代码。 –
@ kwv84这是通过请求 - 回复模式的客户端 - 服务器通信。在Web API中,如果数据到达客户端,则无法在服务器站点检查。在这里,您可以从客户端的第一个ajax请求到服务器的成功操作再次发出ajax调用。 –
我编辑过你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –