c# - ASP.NET - 以 JSON 格式发送响应 - 考虑到源代码,不可能收到响应
问题描述
我的基类定义了以下方法:
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>
.
那么为什么在这个页面上调用另一个页面的方法呢?
解决方案
解决了。
以前,我将“请求者”类设置为静态。我现在已将每个页面对此类的引用替换为对此类的自己的单个实例的引用(现在是动态类)
protected Requestor requestor;
protected override void Page_Load(object sender, EventArgs e)
{
requestor = new Requestor();
requestor.SessionSet += Requestor_SessionSet;
}
现在 Requestor_SessionSet 处理程序仅在最后访问的页面上调用,而不是域生命周期内的所有访问页面。
这里的教训:
静态实例不是请求/页面独有的,而是服务器范围的
推荐阅读
- php - 如何更改复选框属性
- python - 按顺序抓取多个域 - Python Scrapy
- python - Tkinter 中其他类的变量
- javascript - 在 jquery 数据表的特定列中添加文本框
- typescript - 创建 NestFactory 后如何将 mongoose 插件设置为模式
- java - 如何在 SQL 选择中通过其本机名称指定列?
- anypoint-studio - 如何检查 Mulesoft 4 中的所有状态码是否为 200?
- javascript - Angular如何检查2个数组中的重叠值?
- c# - 是否可以使一个窗口始终仅位于另一个窗口的顶部?
- ssl - 错误 SSL NET::ERR_CERT_DATE_INVALID 即使 SSL 尚未过期