如何从ajax操作返回错误信息(作为错误!)?

时间:2011-12-05 16:59:55

标签: ajax asp.net-mvc error-handling

我编写了一个简单的过滤器属性,实现了IExceptionFilter接口,只有在ajax动作中才会处理异常。网上有很多例子。挑选其中任何一个。 但是,我添加了一行:

filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;

这是因为任何异常过滤器捕获确实是一个错误,我希望它是这样报告的。其次,我只是不想在某种{success:success,data:data}对象中包含任何ajax响应。

现在问题出现了:在我的开发机器上,一切都运行得很完美:如果发生异常,客户端会让json描述问题;如果不是 - 返回的数据是调用者预期的数据。本地(谁在同一台机器上查看站点)和远程客户端。 但是当我在另一台服务器上部署应用程序时,只有json为本地客户端返回错误,对于其他所有人 - 它是标准错误html页面。 为什么? <customErrors />模式属性在两个网站上都设置为RemoteOnly

1 个答案:

答案 0 :(得分:0)

这是我如何解决的:

我在第二台计算机上启用了“失败的请求跟踪”功能。然后我运行相同的请求,应该在本地和远程机器上的json中返回错误信息。这给了我两个日志文件。我对它们进行了比较,发现它与

有关
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"

我是这样来的:

<httpErrors existingResponse="PassThrough" />

之后我还分析了两台机器上的machine.config。在这件事上一无所获。这意味着我仍然不知道为什么它首先表现不同。

有什么想法吗?