Пользовательская обработка ошибок для конкретной страницы в ASP.Net - PullRequest
4 голосов
/ 20 апреля 2009

На сайте, который я запускаю, у меня есть 404 и 500 ошибок, сопоставленных для перенаправления на пользовательскую страницу ошибок для конечных пользователей; используя следующий код в моем web.config:

 ...
 ...

 <system.web>
  <customErrors defaultRedirect="/404/default.aspx" mode="RemoteOnly">

     <error statusCode="404" redirect="/404/default.aspx" />

  </customErrors>

  ...
  ...

Однако у меня есть одна конкретная страница, которую я не хочу перенаправлять; страница проверки работоспособности, чтобы убедиться, что сайт работает на 100%. Я попытался установить специальный обработчик ошибок для конкретного местоположения, используя приведенный ниже код в моем файле web.config:

 ...
 ...

   </system.web>
  <location path="health.aspx">
    <system.web>
      <customErrors defaultRedirect="" mode="RemoteOnly"></customErrors>
    </system.web>
  </location>
 ...
 ...

Однако, похоже, это не работает. Когда я переименую health.aspx во что-то другое, например badhealth.aspx, а затем сделаю запрос, я ожидаю получить общую ошибку 404 на странице Yellow Screen of Death. Точно так же, преднамеренно изменяя код для выдачи ошибки, я должен получить 500 ошибок через страницу YSOD. В обоих случаях меня перенаправляют на нашу пользовательскую страницу 404, затем я получаю YSOD. Мысли?

Любая помощь очень ценится.

Спасибо всем, - Фрэнк

1 Ответ

5 голосов
/ 20 апреля 2009

Неважно, мы решили проблему. Кажется, когда у вас есть директива customError для конкретного местоположения; если вы оставите defaultRedirect как "", по умолчанию будет использоваться URL-адрес defaultRedirect.

Решением было просто отключить обработку CustomError для этого конкретного пути, например так:

<system.web>
    <customErrors defaultRedirect="/404/default.aspx" mode="RemoteOnly">
        <error statusCode="404" redirect="/404/default.aspx" />
    </customErrors>
</system.web>
<location path="health.aspx">
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</location>

Спасибо, Хосе.

...