Uzyskanie błędu 404.0 dla ASP.NET aplikacja MVC 3 na IIS 7.0 / Windows Server 2008

Próbuję wdrożyć ASP.NET aplikacja MVC 3 na serwer Windows 2008 x64 (oczywiście z systemem IIS 7.0), A IIS nie chce chyba prawidłowo obsługiwać zawartości. Wszystkie żądania powodują błąd 404.0, ponieważ żądania nie pasują do żadnej obsługi i IIS próbuje użyć obsługi plików StaticFile do obsługi żądań. Problem wydaje się być związany z. NET 4.0, ponieważ mam aplikację MVC 2 działającą dobrze w puli aplikacji skonfigurowanej dla. NET 2.0 runtime.

Nie miałem żadnych problemów z wdrożeniem tej samej aplikacji na serwerach IIS 7.5 zarówno na Windows 7, jak i Windows Server 2008 R2.

Przed wdrożeniem serwer 2008 nie miał. NET 4.0 lub ASP.NET MVC 3 zainstalowany, więc oto kroki, które podjąłem przed wdrożeniem aplikacji:

  1. zainstalowany. NET 4.0
  2. Ran aspnet_regiis.exe (z folderu Framework64/v4.0.30319)
  3. zainstalowany ASP.NET MVC 3 za pomocÄ… platformy internetowej installer
  4. zastosowano MS update KB980368 , aby umożliwić niektórym procedurom obsługi IIS 7.0 lub IIS 7.5 obsługę żądań, których adresy URL nie kończą się kropką

Żądania do zasobów statycznych w aplikacji (pliki JavaScript, obrazy itp.) przechodzą bez problemu, ale każde żądanie do działania MVC kończy się błędem 404.0. Zauważyłem, że IIS używa obsługi plików StaticFile do obsługi tych żądań, co jest oczywiście niepoprawne. Na ASP.NET 4.0 Obsługa (tj. Extensionlessurl-ISAPI-4.0* handlers) są właściwie zdefiniowane, o ile mogę powiedzieć, więc nie mam pojęcia, dlaczego/w jaki sposób żądanie nie byłoby obsługiwane przez jeden z tych handlerów i spadłoby aż do obsługi StaticFile.

Natknąłem się również na następujący artykuł ms knowledge base, który wspomina, że powinieneś upewnić się, że przekierowanie HTTP i statyczna Kompresja treści są włączone/zainstalowane na serwerze, na którym występują błędy 404. Sprawdziłem i oba funkcje były już włączone dla mojego serwera. Próbowałem nawet usunąć i ponownie zainstalować funkcje bez skutku.

W tym momencie kompletnie nie mam pomysłów na to, dlaczego to nie działa prawidłowo. Udało mi się odtworzyć problem na 2 różnych serwerach IIS 7.0. Co przegapiłem?

Author: Justin Holzer, 2011-02-25

6 answers

Rzeczywiście właśnie przypomniał mi, że muszę rozwiązać ten problem w środowisku tutaj. Jeśli Twoja sytuacja jest taka sama jak moja, to proste rozwiązanie.

Po prostu dodaj do swojej konfiguracji:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />

Edit : aby dostarczyć dalszych wyjaśnień na temat omawianego problemu. W moim przypadku działo się to, gdy dodałem niestandardowe mapowania tras IIS widział żądania jako żądania folderów / plików statycznych i tym samym pomijał ASP.NET proces pracownika. To zachowuje się inaczej jest w środowisku deweloperskim, ponieważ jest ono uruchamiane pod serwerem deweloperskim, który również przepuszcza wszystkie żądania przez proces. net.

Ten wpis konfiguracji sieci Web informuje IIS, że masz moduły, które powinny być uruchamiane na każdym żądaniu sieci web, nawet jeśli IIS określa, że jest to plik statyczny lub folder.

 36
Author: Michael Merrell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-02 10:57:28

Upewnij się, że działasz w trybie zintegrowanym IIS 7.0. Jeśli chcesz uruchomić go w trybie klasycznym IIS 7.0, musisz wykonać kilka czynności, aby trasy działały. Proszę zapoznać się z poniższym blogiem posts;

Http://www.tugberkugurlu.com/archive/running-asp-net-mvc-under-iis-6-0-and-iis-7-0-classic-mode---solution-to-routing-problem

Http://www.tugberkugurlu.com/archive/deployment-of-asp-net-mvc-3-rc-2-application-on-a-shared-hosting-environment-without-begging-the-hosting-company

 3
Author: tugberk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-07 00:10:06

Problem polegał na tym, że mój kod całkowicie polegał na funkcji automatycznego uruchamiania, która jest dostępna tylko w IIS 7.5. Udało mi się odkryć problem za pomocą nieudanej funkcji śledzenia żądań w IIS, a teraz zmodyfikowałem mój globalny.asax.plik cs, dzięki któremu aplikacja zostanie prawidłowo zainicjowana, niezależnie od tego jak/kiedy zostanie załadowana.

 2
Author: Justin Holzer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-28 16:08:36

Moje rozwiązanie, po wypróbowaniu wszystkiego:

Złe wdrożenie, stara wstępnie skompilowana aplikacja.config kręcił się wokół mojej lokalizacji wdrożenia i sprawiał, że wszystko nie działało.

Moje ostatnie ustawienia, które zadziałały:

 2
Author: Andrew Arace,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-17 16:13:42

Jeśli używasz aplikacji webowej w systemie IIS 7.5 lub nowszym, upewnij się, że usługi ról dla usług IIS są włączone prawidłowo. Rola usług interesujących to : ASP.NET, podstawowe uwierzytelnianie, przekierowanie HTTP, filtry ISAPI itp.

Możesz przejść do usług roli poprzez dodawanie lub usuwanie programów-Włączanie lub wyłączanie funkcji systemu Windows. Mam nadzieję, że to pomoże.

Pozdrawiam, Kiran Banda

 0
Author: Kiran Banda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-13 08:52:28

Miałem ten sam problem. Mój zakończył się nieudanym montażem po uruchomieniu aplikacji. Włączyłem przeglądarkę dziennika Fusion, aby zobaczyć, które zespoły zawodzą i zorientowałem się. Nigdy bym tego nie odkrył, ponieważ wydawało się, że problem z routingiem MVC, ale pomyślałem, że opublikuję to również każdemu, kto zmarnował godziny na ten problem!

 0
Author: John Hamm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-22 22:36:42