【问题标题】:How do I return error information (as an error!) from ajax action?如何从 ajax 操作返回错误信息(作为错误!)?
【发布时间】:2011-12-05 16:59:55
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    我是这样解决的:

    我在第二台机器上启用了失败请求跟踪功能。然后我运行相同的请求,该请求应该在本地和远程机器上以 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。在这件事上一无所获。这意味着我仍然不知道为什么它的行为一开始就不同。

    有什么想法吗?

    【讨论】:

      猜你喜欢
      • 2016-10-21
      • 2011-01-23
      • 2021-05-21
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 2019-12-09
      相关资源
      最近更新 更多