Я сделал пользовательский Attribute
для определенных конечных точек в моем проекте ASP.NET MVC, который инструктирует сервер возвращать объект 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>
Какая конфигурация веб-проекта мне здесь не хватает, чтобы сервер выполнял инструкцию по возврату объекта JSON?