我为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对象的指令?
答案 0 :(得分:1)
我以前在IIS上见过。
从内存中,您可以尝试以下操作:
认为这是我过去的解决方法