IIS возвращает ошибку по умолчанию HTML вместо JSON, как указано - PullRequest
0 голосов
/ 04 февраля 2019

Я сделал пользовательский 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?

1 Ответ

0 голосов
/ 04 февраля 2019

Я видел это раньше с IIS.

Из памяти вы можете попробовать это:

  • Откройте IIS Mgr
  • Выберите нужный веб-сайт
  • Двойной щелчок по значку страницы ошибок
  • Нажмите правку редактирования параметров функции
  • Измените настройку на подробные ошибки для локальных и пользовательских страниц ошибок для удаленных запросов
  • Попробуй сайт еще раз

Подумай, вот как я обходил его в прошлом

...