httperrors в web.config - PullRequest
       2

httperrors в web.config

5 голосов
/ 28 ноября 2011

Я пытаюсь использовать простую HTML-страницу, когда возникает ошибка недоступности службы 503.

Я использую ниже в system.webservers web.config

<httpErrors errorMode="Custom">
  <remove statuscode="503" substatuscode="-1">
  <error statuscode="503" responseMode="File" path="Views/Shared/IISError.htm">
</httpErrors>

Это не работает.Я по-прежнему получаю страницу IIS по умолчанию, когда я останавливаю приложение.

Я использую mvc3, приложение-бритву.

Ответы [ 4 ]

7 голосов
/ 19 июля 2012

Мне потребовалось некоторое время, чтобы понять это ... но я думаю, что это может помочь вам:

Прежде всего, чтобы настроить ошибки в IIS 7, вам нужно сделать это, используя следующий раздел:

  <system.webServer>
    <httpErrors existingResponse="Replace" defaultResponseMode="Redirect" errorMode="Custom">
      <remove statusCode="503"/>
      <error statusCode="503" responseMode="Redirect" path="Views/Shared/IISError.htm"/>          
    </httpErrors>
  </system.webServer>

Эта конфигурация работает, однако вы можете получить сообщение об ошибке, указывающее, что вы не можете переопределить раздел httpErrors, в этом случае выполните следующие действия:

  1. Откройте C:\Windows\System32\inetsrv\config\applicationHost.config

  2. Изменить:

    <section name="httpErrors" overrideModeDefault="Deny" />
    

    К:

    <section name="httpErrors" overrideModeDefault="Allow" />
    
2 голосов
/ 28 ноября 2011

Вопрос в том, используете ли вы VisualStudio Development Server или IIS7 Express?

если вы используете Cassini (VSDS), вам следует попробовать

<customErrors mode="On" >
  <error statusCode="503" redirect="/Views/Shared/Error.htm"/>
</customErrors>

потому что httpErrors - это новая структура, которая обрабатывается только IIS7. Вы можете найти более подробную информацию о: В чем разница между customErrors и httpErrors? и http://www.iis.net/ConfigReference/system.webServer/httpErrors

1 голос
/ 26 марта 2014

В Mvc 5.1.1 и IIS 7.5 обратная косая черта требуется для указания подпапок для режима ответа файла.

C #:

[HttpGet]
[AllowAnonymous]
public ActionResult Login()
{
    try
    {
        var allowLogin = false;

        if(allowLogin == false)
            return new HttpStatusCodeResult(403);
    }
}

Web.config:

<system.web>
  <!--customErrors tag is not required -->
</system.web>
<httpErrors errorMode="Custom" existingResponse="Replace" defaultResponseMode="File" >
  <remove statusCode="400" subStatusCode="-1" />
  <remove statusCode="401" subStatusCode="-1" />
  <remove statusCode="403" subStatusCode="6" />
  <remove statusCode="403" subStatusCode="-1" />
  <remove statusCode="503" subStatusCode="-1" />
  <remove statusCode="500" subStatusCode="-1" />
  <clear/>
  <error statusCode="400" subStatusCode="-1" path="ErrorPages\400.html" />
  <error statusCode="401" subStatusCode="-1" path="ErrorPages\401.html" />
  <error statusCode="403" subStatusCode="6"  path="ErrorPages\Restrict.html" />
  <error statusCode="403" subStatusCode="-1" path="ErrorPages\403.html" />
  <error statusCode="503" subStatusCode="-1" path="ErrorPages\503.html" />
  <error statusCode="500" subStatusCode="-1" path="ErrorPages\500.html" />
</httpErrors>
1 голос
/ 19 июля 2012

На основании одного из ваших комментариев создается впечатление, что вы останавливаете пул приложений.

Если вы останавливаете пул приложений, вы не можете установить пользовательскую ошибку в файле web.config.Вам нужно будет сделать это в IIS.

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