2011-11-28 12 views
5

Sto tentando di utilizzare la semplice pagina html quando arriva un errore irreversibile del servizio 503.httperrors in web.config

sto usando qui di seguito in system.webservers di web.config

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

Questo è nt lavorando. Sto ancora ottenendo la pagina predefinita di IIS quando interrompo la mia applicazione.

Sto usando mvc3, applicazione per il rasoio.

+1

Prova '' –

risposta

2

La domanda è, stai usando VisualStudio Development Server o IIS7 Express?

se si utilizza Cassini (VSD), allora si dovrebbe provare con

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

perché httpErrors è una nuova struttura che viene gestito solo da IIS7. Potete trovare alcune più informazioni: What is the difference between customErrors and httpErrors? e http://www.iis.net/ConfigReference/system.webServer/httpErrors

+0

Sto usando IIS 7.0 –

+0

Come va si IIS per gettare 503 ? Se lo fai attraverso l'applicazione passerà attraverso il gestore di Asp.Net. La direttiva httpErrors è per il contenuto che non passa attraverso Asp.Net – torm

+0

Sto bloccando il mio pool di app in IIS. questo mi mostra la pagina 503 predefinita invece della mia pagina. –

7

Mi c'è voluto un po 'per capirlo ... ma penso che questo potrebbe aiutare:

Prima di tutto per configurare gli errori in IIS 7 voi bisogno di farlo utilizzando la sezione seguente:

<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> 

funziona Questa configurazione, tuttavia si potrebbe ricevere un errore che indica che non si può ignorare la sezione httpErrors, se questo è il caso, seguire i passi successivi:

  1. Aprire il C:\Windows\System32\inetsrv\config\applicationHost.config

  2. Cambio:

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

    A:

    <section name="httpErrors" overrideModeDefault="Allow" /> 
    
1

Sulla base di uno dei vostri commenti sembra come se siete fermarsi vostra piscina app .

Se si interrompe il pool di applicazioni, non è possibile impostare l'errore personalizzato in web.config. Dovrai farlo in IIS.

1

In Mvc 5.1.1 e IIS 7.5, le barre retroverse sono necessarie per indicare le sottocartelle per la modalità di risposta File.

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>