IIS按照指示返回默认错误HTML而不是JSON

时间:2019-02-04 06:50:47

标签: asp.net-mvc iis asp.net-mvc-5

我为ASP.NET MVC项目中的某些终结点创建了一个自定义Attribute,它指示服务器返回JSON对象,而不是按常规方式处理错误。属性看起来像这样:

public class AjaxErrorHandler : FilterAttribute, IExceptionFilter
{
    public void OnException(ExceptionContext filterContext)
    {
        if (filterContext.HttpContext.Request.IsAjaxRequest())
        {
            filterContext.ExceptionHandled = true;
            filterContext.HttpContext.Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
            filterContext.HttpContext.Response.StatusDescription =
                filterContext.Exception.Message.Replace('\r', ' ').Replace('\n', ' ');
            filterContext.Result = new JsonResult
            {
                Data = new { errorMessage = filterContext.Exception.Message }
            };
        }
    }
}

每当我在本地调试解决方案时,它都可以正常工作,并在错误时返回以下内容:

{"errorMessage":"Error message goes here"}

但是,当我将解决方案部署到生产服务器时,服务器始终会返回以下HTML:

 #content{margin:0 0 0 2%;position:relative;}
 .content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
 -->
 </style>
 </head>
 <body>
 <div id = "header" >< h1 > Server Error</h1></div>
 <div id = "content" >
     < div class="content-container"><fieldset>
 <h2>500 - Internal server error.</h2>
 <h3>There is a problem with the resource you are looking for, and it cannot be displayed.</h3>
 </fieldset></div>
 </div>
 </body>
 </html>

我在这里缺少Web项目的什么配置,以使服务器遵守返回JSON对象的指令?

1 个答案:

答案 0 :(得分:1)

我以前在IIS上见过。

从内存中,您可以尝试以下操作:

  • 打开IIS管理器
  • 选择有问题的网站
  • 双击错误页面图标
  • 点击右侧的修改功能设置
  • 将设置更改为针对远程请求的本地和自定义错误页面的详细错误
  • 再次尝试该网站

认为这是我过去的解决方法