2013-05-06 6 views
5

w moim pliku web.config I określono masę błędów niestandardowych:Własne strony błędów w pliku web.config nie pokrywają wszystkie ścieżki url

<customErrors mode="RemoteOnly" defaultRedirect="~/Error"> 
    <error statusCode="500" redirect="~/Error" /> 
    <error statusCode="404" redirect="~/NotFound" /> 
</customErrors> 

Teraz niektóre linki, takie jak http://mysite.com/dsflhsdff zostaną właściwie przekierowany do mysite.com/notfound. Ale niektóre linki, takie jak https://mysite.com/videoconference/0/0/0, są obsługiwane przez sam serwer - zamiast mojej niestandardowej strony błędu uzyskuję stronę błędu IIS (nie znaleziono pliku lub katalogu). Na przykład ten link - https://scyk.pl/forums/0/0/0 spowoduje wygenerowanie prawidłowego błędu 404 (moja strona błędów niestandardowych).

Co się tutaj dzieje? Czy muszę ręcznie ustawić niestandardowe błędy IIS? Jeśli tak, jak mogę to zrobić?

Odpowiedz

0

Jeśli wywołanie strony nie zostanie przekazane przez silnik asp.net, wówczas tak jest obsługiwane przez IIS.

Możesz to zrobić setup very easy if you have direct access to the iis, ale usługi IIS oferują opcję ustawienia błędów niestandardowych bezpośrednio z pliku web.config witryny. Oto przykład dla błędu 404:

<system.webServer> 
    <httpErrors> 
     <remove statusCode="404" subStatusCode="-1" /> 
     <error statusCode="404" prefixLanguageFilePath="" path="/PageNotFound.aspx" responseMode="ExecuteURL" /> 
    </httpErrors> 
</system.webServer> 

Więcej informacji na: http://www.iis.net/configreference/system.webserver/httperrors

1

To dlatego ASP.NET nigdy nawet nie wie, że doszło do żądania strony .htm. IIS obsłuży strony .htm samodzielnie bez angażowania ASP.NET w ogóle.

można dostać swoją stronę niestandardową, aby pokazać się w jeden z dwóch sposobów:

Get ASP.NET przetworzyć stron .htm: W IIS kliknij prawym przyciskiem myszy witryny sieci Web katalog/wirtualne -> Właściwości -> katalog domowy/zakładka katalogu wirtualnego -> przycisk "konfiguracja" w sekcji "Ustawienia aplikacji" -> Dodaj mapowanie. Ustaw niestandardową stronę błędu dla IIS: w IIS prawym przyciskiem myszy wybierz swoją stronę/katalog wirtualny -> właściwości -> zakładkę błędów niestandardowych -> ustaw błąd 404 na stronie ze stroną błędu.

1

Można również obsługiwać ten błąd w pliku Global.asax w Application_Error metoda

np

void Application_Error(object sender, EventArgs e) 
    { 
     // Code that runs when an unhandled error occurs 
     Exception exc = Server.GetLastError(); 

     // Handle HTTP errors 
     if (exc.GetType() == typeof(HttpException)) 
     { 
      // The Complete Error Handling Example generates 
      // some errors using URLs with "NoCatch" in them; 
      // ignore these here to simulate what would happen 
      // if a global.asax handler were not implemented. 
      /*if (exc.Message.Contains("NoCatch") || exc.Message.Contains("maxUrlLength")) 
       return;*/ 

      //Redirect HTTP errors to HttpError page 
      /*Server.Transfer("HttpErrorPage.aspx");*/ 
     } 
    } 

Więcej informacji: http://www.asp.net/web-forms/tutorials/aspnet-45/getting-started-with-aspnet-45-web-forms/aspnet-error-handling

0

Dzieje się tak dlatego, że IIS jest w stanie zlokalizować swoją stronę błędu niestandardowego w niektórych przypadkach. Zdarzyło mi się to z pewnymi rozszerzeniami, ale konfigurując moją niestandardową stronę błędów w części strony dotyczącej błędów menedżera usług IIS, mogłem za każdym razem trafić w stronę błędów niestandardowych.

Herezje jak to zrobić:

Przejdź do Menedżera IIS i wybrać miejsce w pytaniu znaleźć ikonę zatytułowaną „Strony błędów” w sekcji IIS.

Po dwukrotnym kliknięciu ikony zostanie wyświetlona lista kodów statusu i odpowiadającego pliku odpowiedzialnego za dostarczenie błędu.

Znajdź kod błędu, w twoim przypadku 404 (jeśli nie istnieje, możesz go dodać z menu po prawej stronie, klikając "Dodaj ..."), a następnie kliknij przycisk "Edytuj ..." w menu po prawej stronie.

Następnie kliknij przycisk opcji "Wykonaj adres URL w tej witrynie" w oknie dialogowym, w którym został wyświetlony. Tutaj podajesz względny adres URL, do którego użytkownik zostanie przekierowany.

Po zakończeniu opcji w oknie dialogowym Edycja, będziesz chciał zaznaczyć swoją stronę w głównej Error bólu Strony ponownie, tym razem kliknij „Ustawienia Edytuj operację ...”

W Ustawienia Edytuj strony błędów, które są wyświetlane, upewnij się, że wybrano opcję "Szczegółowe błędy dla żądań lokalnych i niestandardowych stron błędów dla żądań zdalnych". Upewnij się także, że strona wprowadzona w poprzednim menu Edycja została wprowadzona w polu Ścieżka w części Domyślna strona okna dialogowego Edytuj strony błędu. Na koniec Typ ścieżki musi być ustawiony na "Uruchom URL"