Korzystam z systemu Windows 7 Ultimate (64-bitowego) za pomocą programu Visual Studio 2010 RC. Niedawno zdecydowałem, że VS będzie uruchamiać / debugować moje aplikacje na IIS zamiast na serwerze deweloperskim, który jest z nimi związany.
Jednak za każdym razem, gdy próbuję uruchomić aplikację MVC, pojawia się następujący błąd:
Błąd HTTP 403.14 - Zabroniony Serwer sieci Web jest skonfigurowany tak, aby nie wyświetlał zawartości tego katalogu. Szczegółowe
Informacje o błędzie
Moduł DirectoryListingModule
Powiadomienie ExecuteRequestHandler
Błąd statycznego pliku obsługi
Żądany kod 0x00000000
URL http: // localhost: 80 / mySite /
Ścieżka fizyczna C: \ myProject \ mySite \
Metoda logowania Logowanie anonimowe
Anonimowy użytkownik
Umieściłem default.aspx
plik w katalogu i otrzymałem następujący błąd:
Błąd HTTP 500.21 - Wewnętrzny moduł obsługi błędów serwera „PageHandlerFactory-Integrated” ma zły moduł „ManagedPipelineHandler” na liście modułów
Czy są jeszcze jakieś kroki, o których zapomniałem, aby to zadziałało?
Uwagi: Zainstalowałem IIS 7.5 po zainstalowaniu VS 2010 RC. Użyłem wbudowanego przycisku „Utwórz katalog wirtualny” w zakładce „Internet” w „Właściwości” projektu MVC w Visual Studio 2010. Upewniłem się, że aplikacja korzysta z puli aplikacji ASP.NET 4.
Poniżej znajdują się zainstalowane funkcje IIS, które posiadam.
_Layout.cshtml
do_PageLayout.cshtml
i uczynił odpowiednią zmianę_ViewStart.cshtml
, jak również, ale widocznie to nie wystarczyło. Gdy przywróciłem nazwę_Layout.cshtml
, zaczęła działać. Co było mylące, to że_PageLayout.cshtml
został poprawnie pobrany w 32-bitowym Win7, ale nie w 64-bitowym Win7 lub WinSvr2K8 R2.Odpowiedzi:
ASP.NET 4 nie został zarejestrowany w IIS. Musiałem uruchomić następujące polecenie w wierszu polecenia / uruchomić
Windows 32-bitowy (x86)
Windows 64-bitowy (x64)
Notatka z komentarza Davida Murdocha:
źródło
%windir%\Microsoft.NET\Framework64
katalogu i odpowiednio zmień komendę przed uruchomieniem (obecnie jest to wersja 4.0.30319).Jeszcze jedna rzecz, którą musisz się upewnić, to następujący zestaw w pliku web.config:
źródło
runAllManagedModulesForAllRequests
(który działa nawet dla plików statycznych), możesz zainstalować poprawkę Microsoft: microsoft.com/download/en/… .Upewnij się, że masz następujący zestaw w pliku web.config:
Lepsze rozwiązanie:
Mimo że powyższe rozwiązanie działa absolutnie dobrze , może powodować inny problem, ponieważ uruchamia wszystkie zarejestrowane moduły HTTP na każde żądanie (nawet na każde żądanie .jpg .gif .css .html .pdf itp.) I jest to oczywiście marnotrawstwo zasobów. Zamiast
Upewnij się, że atrybut warunku wstępnego jest pusty, co oznacza, że będzie działać na wszystkich żądaniach. [Czytaj więcej] ( http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html , „Przeczytaj oryginalny post”)
źródło
<system.web><httpModules><add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />
, wWindows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config
i spojrzał zostały zmodyfikowane w dniu mojej instalacji VS 2012. Kolejne pytanie brzmi: co jest w moim innym projekcie, który pozwala mu funkcjonować?%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir
zalecane przez najlepsze rozwiązanie, które ustawia wartości domyślne, które muszą istnieć na moim urządzeniu programistycznym. To polecenie nie rozwiązuje problemu po usunięciu odwołania UrlRoutingModule.Innym powodem, dla którego ktoś może otrzymać ten błąd, jest to, że pliku Global.asax nie ma już w folderze głównym.
źródło
global.asax
dotyczy tylko plików).Otrzymałem również ten błąd i odkryłem, że „Przekierowanie HTTP” nie zostało włączone w systemie Windows Server. Ten post na blogu również to podkreśla: http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable-not-working-with-iis.aspx
źródło
Słodki Jezu. Próbowałem wszystkich powyższych rzeczy (ale moje ustawienia były identyczne). JESZCZE INNE ROZWIĄZANIE, jeśli masz problemy:
http://support.microsoft.com/kb/980368
Spróbuj zainstalować ten KB dla swojego systemu. Jeśli widzisz 404, może to wynikać z tego, że nie masz tej aktualizacji - a moduł isapi po prostu się nie odnajduje i bez tego nie możesz wiele zrobić!
źródło
Możesz także przełączyć AppPool w tryb zintegrowany . Dziękuję Michaelowi Bianchi ( https://stackoverflow.com/a/7956546/1143515 ), chcę tylko to podkreślić.
źródło
Dla mnie na maszynie Wirtualnej Azure Server 2012 R2 IIS 8.5 z aplikacją Asp.Net MVC 5 (bin wdrożony MVC 5) musiałem wykonać następujące czynności z wiersza polecenia z podwyższonym poziomem uprawnień, mimo że miałem już zainstalowany 4.5:
Źródło: http://support.microsoft.com/kb/2736284
Brute force zainstalowałem również wszystkie funkcje IIS za pomocą następującego programu PowerShell:
Źródło: http://www.iis.net/learn/install/installing-iis-85/installing-iis-85-on-windows-server-2012-r2
Teraz moja aplikacja działa.
źródło
Przeniesiono aplikację MVC na nowy serwer. .NET 4 i MVC 3 zostały zainstalowane, ale nadal pojawia się „Błąd 403.14 ″. W tym przypadku oznaczało to, że IIS nie rozumiał, że ma do czynienia z aplikacją MVC, szukał domyślnej strony.
Rozwiązanie było proste: Przekierowanie HTTP nie zostało zainstalowane na serwerze.
Menedżer serwera - Role - Serwer sieci Web (IIS) - Usługi ról - Przekierowanie HTTP: niezainstalowany. Zainstalowałem go, problem rozwiązany.
źródło
Również jeśli Twoja aplikacja jest wstępnie skompilowana, powinieneś ją mieć
PrecompiledApp.config
w folderze głównym aplikacji, w przeciwnym razie możesz również uzyskać
HTTP Error 403.14
.źródło
Innym możliwym rozwiązaniem, jeśli poruszasz się po global.asax, upewnij się, że znaczniki wskazują prawidłową klasę MvcApplication. Mam nadzieję, że uratuje to kogoś w przyszłości.
źródło
Użyłem rozszerzenia WebDeploy IIS do importowania moich stron internetowych z IIS6 do IIS7,5, więc wszystkie ustawienia IIS były dokładnie takie same, jak w środowisku produkcyjnym. Po wypróbowaniu wszystkich dostarczonych tu rozwiązań, z których żadne nie działało dla mnie, musiałem po prostu zmienić ustawienie Puli aplikacji dla witryny z Klasycznej na Zintegrowaną.
źródło
Nagle spotkałem ten sam problem 404,14. Wreszcie problem został rozwiązany przez odznaczenie opcji „prekompiluj podczas publikowania” w ustawieniach profilu publikowania.
źródło
W pewnym momencie zmieniłem domyślną trasę z:
Do:
Co dało mi twój błąd. Cieszę się, że ktoś wspomniał o routingu, ponieważ prawdopodobnie byłbym w tym na zawsze.
źródło
W moim przypadku ASP.NET 4.5 nie jest zainstalowany na serwerze, więc zainstalowanie ASP.NET 4.5 naprawiło problem.
źródło
Możesz rozwiązać ten błąd, uruchamiając cmd jako admin niż
Zrób to samo, co na obrazie dla 32-bitowego systemu Windows
Po prostu wprowadź zmiany w wersji 64-bitowej jako framework64 zamiast tylko frameworku Idź do iis i odśwież stronę
Jeśli nadal masz jakiś błąd, wprowadź zmiany w puli aplikacji
źródło
Miałem inny problem, który doprowadził do tego problemu.
Żadna z tych rzeczy nie działała. Okazało się, że w moim web.config w module system.webserver> moduły miałem:
Oczywiście usunęło to moduł uwierzytelniania systemu Windows, który wydawał się jakoś znokautować.
Mam nadzieję, że to komuś pomoże, ponieważ kosztowało mnie to większość wieczoru!
źródło
Interfejs użytkownika jest nieco inny w nowszych wersjach systemu Windows Server. Tutaj musisz włączyć ASP.Net, aby działał na IIS
źródło
Dodanie innego rozwiązania tego problemu.
w moim pliku Global.asax.cs wyłączyłem próbę wykorzystania plików php przez potok MVC przy użyciu:
routes.IgnoreRoute( "{*php}" );
Zrobiłem to wcześniej w projekcie MVC2 i działało dobrze, ale zrobienie tego w mojej aplikacji MVC 3 spowodowało problem zgłoszony powyżej.
źródło
Jest jeszcze jeden powód, dla którego może się to zdarzyć - twój
RouteConfig.cs
lubWebApiConfig.cs
są nieważne.W moim przypadku zdefiniowałem trasę jako taką (zwróć uwagę na nawias zamiast nawiasu klamrowego):
źródło
routes.MapRoute( name:"Default", url:"{controller}/{action}/{repositoryId}", defaults:new { controller = "Account", action = "Login", id = UrlParameter.Optional } );
. Kiedy stałaid = UrlParameter.Optional
narepositoryId = UrlParameter.Optional
nim zacząć pracę!Uwaga: dla użytkowników systemu Windows 8 musisz dodać / usunąć składniki systemu Windows i usunąć wersję .net restartu, a następnie ponownie zainstalować, aby zarejestrować go w IIS. Zakładam, że tak się stanie, jeśli dostaniesz .net 4.5 ze studia wizualnego i później zainstalujesz IIS.
źródło
Choć może się to wydawać dziwne, ponowna instalacja IIS była dla mnie skuteczna, z następującego polecenia uruchomionego z folderu wersji .net:
Kiedy po raz pierwszy uruchomiłem to polecenie, zacząłem otrzymywać błąd HTTP 403.14. Ale kiedy ponownie uruchomiłem polecenie, rozwiązało to problem.
Obs : Inną rzeczą, którą zrobiłem, było usunięcie przekierowania HTTP z funkcji serwera na ekranie Zarządzanie serwerem przed ponownym zainstalowaniem IIS. Być może miało to również wpływ na rozwiązanie problemu, ale nie jestem pewien. Jeśli więc ponowna instalacja IIS nadal nie działa, spróbuj usunąć Przekierowanie HTTP i spróbuj ponownie. Mam nadzieję, że może to również zadziałać dla Ciebie.
źródło
aspnet_regiis.exe
nie instaluje ani nie instaluje ponownie usług IIS, rejestruje tylko określoną wersję środowiska .NET, dzięki czemu może być używany przez IIS do hostowania aplikacji.Aby rozwiązać ten problem bez konieczności uciekania się do trybu 32-bitowego, musisz zaktualizować kod źródłowy tego projektu
Podniosłem tę kwestię jako dyskusję na forum dyskusyjnym w projekcie IT codeplex.
http://itcloud.codeplex.com/discussions/262000
źródło
To działało dla mnie i może być przydatne dla innego.
Być może wszystkie wymagane komponenty nie są obecne lub / i nie wszystkie są poprawnie zarejestrowane. Aby rozwiązać ten problem, usuń zaznaczenie wszystkich opcji w Panelu sterowania -> Włącz lub wyłącz funkcje systemu Windows -> Internetowe usługi informacyjne -> Internetowe usługi sieciowe -> Funkcje rozwoju aplikacji, odznacz wszystkie opcje i zaznacz ponownie, a następnie zresetuj IIS i sprawdź, czy problem został rozwiązany.
źródło
Jeśli używasz IIS 8.5 w systemie Windows 8 lub Server 2012, może się okazać, że uruchomienie mvc 4/5 (.net 4.5) nie działa w katalogu wirtualnym. Jeśli utworzysz lokalny wpis hosta w pliku hosta, aby skierować go z powrotem na komputer lokalny, a następnie wskaż nową lokalną witrynę internetową IIS do tego folderu (z pasującym wpisem nagłówka hosta), przekonasz się, że to działa.
źródło
Utworzyłem nową przestrzeń nazw (a zatem folder) identyczną z trasą do kontrolera (np.
MvcApp/Test/SomeClasses.cs
IMvcApp/Controllers/TestController.cs
). Spowodowało to również 403,14!źródło
Dla mnie rozwiązaniem było dodanie pakietu NuGet Microsoft.AspNet.WebPages (plus to zależności Razor i Infrastructure) do mojego projektu internetowego.
Infrastrukturę trzeba było zdecydowanie przeinstalować, ponieważ początkowo nie została dodana jako odniesienie.
źródło
W moim przypadku .NET CRL Version in prppertires puli aplikacji ustawiono na Brak kodu zarządzanego (nie wiem dlaczego). Ustawienie go na .NET CRL wersja v4.0.30319 rozwiązało problem.
źródło