Asp.net mvc ASP.NET MVC 5 JsonResult不包括非Http.OK响应的有效负载

Asp.net mvc ASP.NET MVC 5 JsonResult不包括非Http.OK响应的有效负载,asp.net-mvc,asp.net-mvc-5,httpresponse,Asp.net Mvc,Asp.net Mvc 5,Httpresponse,我正在从AngularJs发送GET请求,希望在出现故障时显示实际的服务器错误(这是一个概念证明,因此我可以向测试人员显示技术错误)。这在本地主机上正常工作,但在远程请求(部署到服务器上时)中失败 注意:为了更好的可读性,删除了不相关的代码 客户端代码 $http(loadReqData).success(function(data, status ) { if (status !== 200) { // non OK responses handling ...

我正在从AngularJs发送GET请求,希望在出现故障时显示实际的服务器错误(这是一个概念证明,因此我可以向测试人员显示技术错误)。这在本地主机上正常工作,但在远程请求(部署到服务器上时)中失败

注意:为了更好的可读性,删除了不相关的代码

客户端代码

$http(loadReqData).success(function(data, status ) {
    if (status !== 200) {
        // non OK responses handling ...
        return;
    }

    // ok handling
}).error(function(data, status, headers, config) {
    // error handling ...
    // here I do not receive expected information (in data variable)
}).finally(function() {
    $loading.finish(loaderName);
});
服务器端

$http(loadReqData).success(function(data, status ) {
    if (status !== 200) {
        // non OK responses handling ...
        return;
    }

    // ok handling
}).error(function(data, status, headers, config) {
    // error handling ...
    // here I do not receive expected information (in data variable)
}).finally(function() {
    $loading.finish(loaderName);
});
这是一个MVC控制器,不是Web.API控制器

在本地主机上运行时,我有一个错误
数据
将收到实际错误:

无法获取行计数-

在服务器上运行时,我有一个错误
数据
将只包含

错误的请求

我已允许显示自定义错误(web.config):



问题:为什么部署在服务器上时我不接收http响应内容?

请尝试将其添加到您的web.config:

<system.web>      
    <customErrors mode="Off" />       
</system.web>  


注意,这将适用于所有错误响应,但您应该实现设置
响应.code
和自定义响应的预期结果

错误内容是否为标准IIS响应?首先想到的是,尽管关闭了
CustomErrors
,但远程web服务器的错误处理可能会拾取错误并显示其默认错误内容。另外,您的web.config是否有
可以尝试返回字符串而不是JsonResult吗?在这种情况下,您当然必须将对象序列化为json。@scgough-
httpErrors
未在web.config中指定。customErrors presence或其值似乎不会改变结果。@Alexei ok-为了保持理智,您可以尝试将
httpErrors
节点添加到web.config并测试“live”节点吗。请看:(IIS7+使用httperrors而不是customerrors,我想)@ali-我尝试返回一个ContentResult而不是JsonResult,但结果是一样的。是的,这对我来说很有帮助。谢谢另外,根本不设置
httpErrors
,而是设置
TryToSkipCustomErrors
并删除
过滤器。添加(新HandleErrorAttribute())将产生相同的结果。