2011-11-28 15 views
5

Estoy tratando de usar una página html simple cuando aparece el servicio 503 no disponible.httperrors en web.config

estoy usando continuación en system.webservers de web.config

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

Esto está trabajando nt. Todavía estoy obteniendo la página predeterminada de IIS cuando detengo mi aplicación.

Estoy usando mvc3, aplicación de afeitar.

+1

Try '' –

Respuesta

2

La pregunta es, ¿está utilizando VisualStudio Development Server o IIS7 Express?

si está utilizando Cassini (VSD), entonces usted debe tratar con

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

porque httpErrors es una nueva estructura que se maneja solamente por IIS7. Puede encontrar más información en: What is the difference between customErrors and httpErrors? y http://www.iis.net/ConfigReference/system.webServer/httpErrors

+0

estoy usando IIS 7.0 –

+0

¿Cómo le va a tirar que IIS 503 ? Si lo hace a través de la aplicación, pasará por el controlador Asp.Net. La directiva httpErrors es para contenido que no pasa por Asp.Net – torm

+0

Estoy deteniendo mi grupo de aplicaciones en IIS. esto me muestra la página predeterminada 503 en lugar de mi página. –

7

Me tomó un tiempo para resolver esto ... pero creo que esto podría ayudarle a:

En primer lugar configurar errores en IIS 7 que necesita hacerlo utilizando el apartado siguiente:

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

Esta configuración funciona, sin embargo es posible que reciba un error que indica que no se puede anular la sección httpErrors, si ese es el caso, siga los siguientes pasos:

  1. Abra la C:\Windows\System32\inetsrv\config\applicationHost.config

  2. Cambio:

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

    Para:

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

Basado en uno de sus comentarios, parece como si estás parando el grupo de aplicaciones .

Si detiene su grupo de aplicaciones no puede establecer el error personalizado en el archivo web.config. Tendrá que hacerlo en IIS.

1

En Mvc 5.1.1 e IIS 7.5, se requieren barras invertidas para indicar subcarpetas para el modo de respuesta de archivo.

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>