2013-09-07 4 views
5

Są kody w web.config:Jak przekierować wszystkie httpErrors do niestandardowego adresu URL?

<system.web> 
    <customErrors mode="Off" > 
    </customErrors> 
</system.web> 
<system.webServer> 
    <httpErrors errorMode="Custom" existingResponse="Replace"> 
    <clear /> 
    <error statusCode="404" prefixLanguageFilePath="" path="/ResourceNotFound" responseMode="ExecuteURL" /> 
    <error statusCode="500" prefixLanguageFilePath="" path="/ResourceNotFound" responseMode="ExecuteURL" /> 
    </httpErrors> 
</system.webServer> 

Powyższe ustawienia przekieruje httpError od 404 do 500 tylko.

Ale zamiast ręcznie dodać cały kod błędu 400, 401, 403 .... etc..etc ...

możemy po prostu ustawić go przekierować wszystkie błędy do tej samej zawartości bez wpisywania wszystkich Kod błędu?

<error statusCode="400" ..... 
<error statusCode="401" ..... 
<error statusCode="403" ..... 
<error statusCode="404" ..... 
<error statusCode="xxx" .... 

Odpowiedz

6

spróbować,

dodać w pliku web.config.

<system.webServer> 
    <httpErrors errorMode="DetailedLocalOnly" defaultResponseMode="File" > 
    <remove statusCode="500" /> 
    <error statusCode="500" prefixLanguageFilePath="C:\Contoso\Content\errors" 
    path="500.htm" /> 
</httpErrors> 
</system.webServer> 

i

<httpErrors existingResponse="Replace" defaultResponseMode="ExecuteURL" errorMode="Custom"> 
    <remove statusCode="404" /> 
    <error statusCode="404" path="/ErrorPages/Oops.aspx" responseMode="ExecuteURL"/> 
    <remove statusCode="401" /> 
    <error statusCode="401" path="/Account/Login.aspx" responseMode="ExecuteURL"/> 
    <remove statusCode="501"/> 
    <error statusCode="501" path="/ErrorPages/Oops.aspx" responseMode="ExecuteURL"/> 
    <remove statusCode="411"/> 
    <error statusCode="411" path="/ErrorPages/Oops.aspx" responseMode="ExecuteURL"/> 
    <remove statusCode="403"/> 
    <error statusCode="403" path="/ErrorPages/Oops.aspx" responseMode="ExecuteURL"/> 
</httpErrors> 

i więcej o tym http://www.iis.net/configreference/system.webserver/httperrors

+2

Program OP zapytał, czy istnieje sposób przekierowania do strony błędu dla WSZYSTKICH błędów bez konieczności wprowadzania każdego możliwego błędu HTTP w pliku web.config. Właśnie powtórzyłeś jego pytanie. – webworm

+1

@webworm Wybrałem to jako odpowiedź, ponieważ zakładałem, że odpowiedział pośrednio na to pytanie. Odpowiedź brzmi "Nie", każdy kod błędu http musi być zdefiniowany osobno. Nie ma czegoś takiego jak kod błędu = :) – mjb

+0

Co to jest zawartość (kod źródłowy) *** Oops.aspx ***? – Kiquenet

5

sekcji httpErrors ma atrybut defaultPath.

<system.webServer> 
    <httpErrors defaultPath="Error.html" defaultResponseMode="File"> 
    <clear /> 
    </httpErrors> 
</system.webServer> 

http://www.iis.net/configreference/system.webserver/httperrors

Jednakże, nie należy go używać, ponieważ defaultPath jest zablokowana w IIS Express, domyślnie. Musisz edytować %homepath%\Documents\IISExpress\config\applicationHost.config, aby odblokować.

<httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath"> 
    <!-- ... --> 
</httpErrors> 
+0

Wprowadziłem zmiany w moim pliku konfiguracyjnym IIS Express bez skutku. To samo dotyczy odblokowywania usług IIS zainstalowanych na moim komputerze. Czy jest coś jeszcze, co należy zmienić, aby problem z blokadą zniknął? – siride

+2

Nowoczesna konfiguracja przechowuje pliki IIS Express w katalogu $ (ProjectRoot) \. Versus \ config. Czy edytowałeś to? –

+0

Dzięki. Nie wiedziałem, że się poruszyło. Edycja w nowej lokalizacji załatwiła sprawę. – siride