How do I return error information (as an error!) from ajax action?
我编写了一个实现IExceptionFilter接口的简单过滤器属性,该接口仅在ajax动作中发生异常时才处理异常。 网上有很多例子。 挑选其中任何一个。
但是,我添加了一行:
1 | filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError; |
这是因为任何异常过滤器捕获确实是一个错误,我希望它是这样报告的。 其次,我只是不想在某种{success:success,data:data}对象中包含任何ajax响应。
现在问题是:在我的开发机器上,一切都运行得很完美:如果发生异常,客户端会让json描述问题; 如果不是 - 返回的数据是调用者预期的数据。 本地(谁在同一台机器上查看站点)和远程客户端。
但是当我在另一台服务器上部署应用程序时,只有json为本地客户端返回错误,对于其他所有人 - 它是标准错误html页面。 这是为什么? 两个站点上的
这是我如何解决它:
我在第二台计算机上启用了Failed Requests Tracing功能。 然后我运行相同的请求,应该在本地和远程机器上的json中返回错误信息。 这给了我两个日志文件。 我对它们进行了比较,发现它与它有关
1 2 3 | 263. NOTIFY_MODULE_START ModuleName="CustomErrorModule", Notification="SEND_RESPONSE", fIsPostNotification="false" 09:05:49.998 264. GENERAL_NOT_SEND_CUSTOM_ERROR Reason="EXISTINGRESPONSE_AUTO" 265. NOTIFY_MODULE_END ModuleName="CustomErrorModule", Notification="SEND_RESPONSE", fIsPostNotificationEvent="false", NotificationStatus="NOTIFICATION_CONTINUE" |
我是这样来的:
1 | <httpErrors existingResponse="PassThrough" /> |
之后我还在两台机器上分析了machine.config。 在这件事上一无所获。 这意味着我仍然不知道为什么它首先表现不同。
有什么想法吗?