CustomErrors mode = "On" не перенаправляет на страницу пользовательских ошибок в ASP.Net Web API 2.0 - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь создать страницу customError в нашем проекте Web API.Если в API произошла какая-то необработанная ошибка, мне нужно перенаправить на какую-то пользовательскую страницу, или если маршрут недоступен, тогда мне также нужно перенаправить на какую-то пользовательскую страницу ошибки.Для этого я добавил следующие параметры в файл web.config.

<compilation debug="true" targetFramework="4.5" />
<customErrors mode="On" defaultRedirect="~/Error">
  <error statusCode="404" redirect="~/Error"/>
</customErrors>

Я добавил представление Error.cshtml в общую папку.(Примечание: в моем проекте нет контроллера ошибок)

Но если я попаду по неверному пути, я получу страницу настройки IIS 404.Пожалуйста, смотрите скриншот. enter image description here

Не уверен, что именно мне не хватает.Также, если я подключил отладчик, он не приходит к методу Application_Error из Global.asax.cs (например, ошибки 404/501).Удивительно.

Ваша помощь будет оценена по достоинству.

1 Ответ

0 голосов
/ 11 июня 2018

У меня сегодня та же проблема, и я нашел решение, которое может вам помочь.Я предполагаю, что в вашем контроллере вы делаете что-то вроде этого:

 public ActionResult AddReport
    ... 
    if (something is bad...)
         return HttpNotFound("Hey you have some beautiful error here");

Так что это точно возвращает скриншот, который вы включили в свой вопрос.
Решение состоит в том, чтобы сделать это таким образом

  public ActionResult AddReport
    ... 
    if (something is bad...)
         return new HttpException(404, "Hey you have some beautiful error here");

РЕДАКТИРОВАТЬ

Исходя из вашего комментария, это не практичное решение, когда у вас уже есть много контроллеров

В этом случае,Вы можете попробовать отредактировать ваш web.config и заменить тег на этот

<httpErrors errorMode="Custom">
  <remove statusCode="404"/>
  <error statusCode="404" path="/Error.html" responseMode="ExecuteURL"/>
</httpErrors>

Счастливого кодирования !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...