【发布时间】:2020-12-14 06:22:52
【问题描述】:
我的基类定义了以下方法:
protected void RespondWithJson<T>(T graph)
{
var response = HttpContext.Current.Response;
ClearResponse();
response.ContentType = "text/json";
DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(T));
ds.WriteObject(response.OutputStream, graph);
response.End();
Sql_Disconnect();
}
该方法属于所有将响应 JSON 的页面,具体取决于 URL 中的查询参数。
当您考虑所涉及的源代码时,我从我的一个页面得到的响应毫无意义。
该页面用于为我们的拣货和打包操作单独提交拣货。 RespondWithJson 是这些页面用来确定其响应的唯一方法。
picksubmission 页面做出的唯一响应是 PickSubmissionResult 类型
例如
RespondWithJson(new PickSubmissionResult() { message = "Some URL Parameters are missing from the call!" });
但是,我从该页面实际得到的响应是 List<PickingRow> 类型的
一个完全在服务器上的不同页面将使用List<PickingRow>做出响应。
那么为什么在这个页面上调用了另一个页面的方法呢??
【问题讨论】:
-
与答案无关,但您应该阅读Is Response.End() considered harmful?的答案
-
欣赏评论 - 我想我已经发现了实际问题,我认为这是因为我的每个页面都有一个订阅属于静态类的事件的方法。我的理解是,这个静态实例对于每个请求/页面都是唯一的——显然情况并非如此。结果,即使在访问不同的页面时,也会调用此处理程序的先前访问页面的版本。 - 我将不得不修改我的一些代码,看看问题是否仍然存在。
标签: c# asp.net json http serialization