2012-02-15 21 views
5

Mam trudności z uruchomieniem zdarzenia On_Error w pliku Global.asax. Gdy aplikacja otrzyma błąd, powinna przejść do pliku Global.asax, zarejestrować błąd w bazie danych i przekierować do niestandardowej strony błędu. Powyższy kod działa dobrze w moim lokalnym, ale raz wdrożyć to samo w maszynie DEV Global.asax nie jest wykonywana.Jak sprawdzić, czy plik Global.asax jest wywoływany

To zawsze przekierowuje do strony błędu custome wspominałem w web.config

<customErrors mode="On" defaultRedirect="/Error_Redirect.asp"> 
     <error statusCode="404" redirect="/404.asp"/> 
    </customErrors> 

Struktura projektu w IIS jest jak Test1 \ Test 2. Kod obsługi błędów, który próbuję, znajduje się w teście 2 i jego wirtualnej diecie w IIS. Jeśli mam jakiś błąd w pliku web.config, jak "Sekcja już wspomniano", to błąd trafia do pliku Global.asax. Jeśli występują błędy środowiska wykonawczego, jak na przykład poniżej, to nie przychodzi do pliku Global.asax.

Int32 i, j, k; 
i = 10; 

j = 0; 

k = i/j; 

Response.Write(k); 

. Nawet zmęczony ustawiam tryb na Wyłączony/Zdalny Tylko. Jakieś sugestie?

Dzięki,

+0

Może to pomaga: http://stackoverflow.com/questions/5604144/application-error-does-not-fire –

+0

@ Tim Próbowałem tych opcji. Ale wygląda na to, że wypalanie Global.asax jest niespójne. Czasami trafia w plik Global.asax, ale nie jest stały. Zastanawiasz się, czy ma to coś wspólnego z ustawieniami IIS. – Vani

+0

Nie masz na myśli zdarzenia Application_Error? Wystrzeliwuje tylko zdarzenie, jeśli tryb customErrors = "Off". –

Odpowiedz

0

Czy jest jakaś szansa, że ​​aplikacja jest uzyskiwanie ładowane do wielu procesów ASP.NET lub domen? Kiedy używasz "Test1/Test2", czy sądzisz, że przez jakiś czas URL, do którego dzwonisz, przechodzi przez "Test1/Test2", a czasami przez "Test2"?

Ostatnio pracowałem nad POC w ASP.NET i przez pomyłkę przeniosłem plik Global.asax do podfolderu, a nie do katalogu głównego aplikacji. Spodziewałem się, że jakiś kod w wydaniu startowym aplikacji zostanie uruchomiony - który nigdy nie został zwolniony. Po przeniesieniu z powrotem do katalogu głównego aplikacji, zaczęło działać zgodnie z oczekiwaniami.

Tak więc, gdy zadzwonisz przez "Test2", twój wyjątek obsługi Global.asax zostanie wywołany podczas połączenia przez "Test1/Test2", wtedy Twój Global.asax nie uruchomi się.

+0

Moja struktura folderów jest podobna do FolderA/FolderB. Folder B zawiera plik .aspx.cs [zawierający błąd] oraz plik global.asax. – Vani

1

Twoja przeglądarka może buforować przekierowanie. spróbuj nieznacznie zmodyfikować adres URL, aby był inny. Podobnie jak przy dodawaniu czegoś po aktualnym adresie URL, możesz mieć pewność, że nie jest on zapisany w pamięci podręcznej w przeglądarce.

Możesz też wypróbować Ctrl Shift Delete w swojej przeglądarce, aby usunąć pamięć podręczną.

Jeśli chcesz mieć pewność, że Twój globalny asax będzie działał, możesz użyć czegoś takiego w haśle eventowym wewnątrz pliku global.asax.

HttpContext.Current.Response.Write("TEST"); 
HttpContext.Current.Response.End(); 
2

Powinieneś spróbować upuścić plik preompompiledapp.config z katalogu głównego. (przynajmniej tymczasowo zmień nazwę)

Powiązane problemy