Zbudowałem aplikację internetową .net4.5 ASP.NET MVC4, która działa dobrze lokalnie (IIS Express i serwer deweloperski), ale po wdrożeniu jej na moim serwerze sieciowym generuje błąd 403. Zainstalowałem .Net 4.5RC na serwerze i nawet wypróbowałem
aspnet_regiis -i
bit, który wszyscy zalecali w przypadku problemów z poprzednimi wersjami MVC / .Net, ale to nie pomogło.
Jakieś pomysły?
EDYCJA : Więcej informacji o sytuacji. Serwer jest 32-bitowy i mam 4 inne aplikacje MVC3, które działają dobrze. To tylko moja aplikacja MVC4, która nie działa.
.net
asp.net-mvc
asp.net-mvc-4
iis
http-status-code-403
mithun_daa
źródło
źródło
Odpowiedzi:
Próbować
<system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer>
Przez
/server/405395/unable-to-get-anything-except-403-from-a-net-4-5-website
źródło
Błąd 403,14 to kod błędu HTTP dotyczący braku zezwolenia na wyświetlenie zawartości katalogu. Upewnij się, że
Zwykle a i d są największymi problemami dotyczącymi wdrożeń MVC w usługach IIS
źródło
Być może ... Jeśli zdarzy się, że użyjesz Kreatora publikacji (tak jak ja) i zaznaczysz pole wyboru „Prekompiluj podczas publikowania” (tak jak ja) i zobaczysz te same symptomy ...
Tak, uderzyłem się w głowę, ale po usunięciu zaznaczenia tego pola, pozornie niezwiązanego ze sobą ustawienia, wszystkie opisane objawy ustąpiły po ponownym wdrożeniu.
Mam nadzieję, że to naprawi niektórych ludzi.
źródło
Windows-> Start -> Włącz i wyłącz funkcje systemu Windows
Upewnij się, że zaznaczyłeś wymagane opcje w
źródło
Przed zastosowaniem
runAllManagedModulesForAllRequests="true"/>
rozważ poniższy link, który sugeruje mniej drastyczną alternatywę. W poście autor proponuje następującą zmianę w lokalnym pliku web.config:
<system.webServer> <modules> <remove name="UrlRoutingModule-4.0" /> <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" /> </modules>
http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html
źródło
Istnieje błąd Refactor -> Rename w programie Visual Studio 2012, który błędnie zmienił nazwę „id” wewnątrz wartości ciągu literału parametru url w moim RouteConfig.cs. Spowodowało to błąd 403,14 w nowej i poprawnej konfiguracji zarówno w systemie Windows Server 2012, jak i Windows Server 2008 R2.
routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
został zmieniony na
routes.MapRoute( name: "Default", url: "{controller}/{action}/{renamed_text}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
źródło
null
dlaname
parametru, aby uniknąć tworzenia się nazwę dla każdej trasy. Okazuje się, że czasami powoduje to również 403 (tylko w naszym środowisku produkcyjnym, Win Server 2008 R2 z .NET 4.5.1, MVC 5 w projekcie VS2013. Aby rozwiązać problem, dodałem nazwę dla każdej trasy.Możesz również uzyskać 403, jeśli podczas testowania na serwerze deweloperskim używasz zintegrowanego potoku, a następnie instalujesz jako klasyczny tryb potoku na serwerze sieci Web IIS 7.5 na żywo, brakowało mi również folderu app_data, który również był wymagany
źródło
Jeśli korzystasz z usług 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 wpis hosta lokalnego w pliku hosta, aby wskazywał z powrotem na komputer lokalny, a następnie wskażesz nową lokalną witrynę sieci Web usług IIS do tego folderu (z pasującym nagłówkiem hosta), okaże się, że wtedy działa.
źródło
<system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer>
Możesz użyć powyższego kodu
źródło
Ustawiłem pulę aplikacji nowej aplikacji na
DefaultAppPool
w IIS, która oczywiście używaClassic
potoku z.NET v.2.0
.Aby rozwiązać problem, utworzyłem nową pulę aplikacji przy użyciu
Integrated
potoku i.NET v4.0
. tylko dla tej nowej aplikacji i wszystko zaczęło działać zgodnie z oczekiwaniami.Nie zapomnij przypisać tej nowej puli aplikacji do aplikacji. Wybierz aplikację w usługach IIS, kliknij,
Basic Settings
a następnie wybierz nową pulę aplikacji dla aplikacji.źródło
ten, który ostatnio widzę częściej, to IIS i umożliwiający działanie aplikacji 32-bitowych
Czy właśnie tego próbowałeś. w przeciwnym razie potrzebujemy więcej informacji o wersjach serwerów produkcyjnych i deweloperskich
źródło
Mam trochę inny problem, na serwerze 2012 jakoś zapomniałem włączyć asp.net 4.5, więc jeśli masz ten problem, sprawdź dwukrotnie, czy go włączasz.
źródło
Używam systemu Windows Server 2012 R2 na platformie Azure i ASP.NET 4.5, IIS 8
Rozwiązałem ten problem, odinstalowując wszystkie elementy ASP.NET w programach i funkcjach, a następnie ponownie instalując ASP.NET w ten sposób za pomocą Menedżera serwera za pomocą Dodaj role i funkcje: wybrano instalację opartą na rolach lub funkcjach, wybrałem mój serwer, a następnie dla opcji Wybierz rolę serwera wybrano serwer sieci Web (IIS) / serwer sieci Web / programowanie aplikacji, a następnie kliknięto ASP.NET 4.5, potwierdzono instalację warunku wstępnego, a następnie ponownie zainstalowano ASP.NET 4.5.
Moje poprzednie wyszukiwania doprowadziły mnie do przekonania, że problem w rzeczywistości wynika z problemu z rejestracją w ASP.NET. We wcześniejszych wersjach programu ASP.NET istnieje narzędzie, które można uruchomić w celu zarejestrowania programu ASP.NET bez ponownej instalacji, ale wydaje się, że nie jest ono już dostępne.
źródło
Rozwiązuję problem otwierając Visual Studio, rozszerzając referencje i zmieniając właściwość „Copy Local” na „True”.
Odkryłem to, porównując biblioteki DLL ze starej wersji z bibliotekami DLL mojej nowej wersji (to nie działało)
źródło
W moim przypadku domyślną stroną mojej aplikacji był index.html, którego brakowało w domyślnych opcjach dokumentu. Dodanie go naprawiło błąd 403.14 Zakazany.
źródło
W moim przypadku problem był spowodowany niestandardowym ActionFilterAttribute, który był rodzajem globalnego atrybutu filtru. Atrybut utworzył wystąpienie usługi za pośrednictwem usługi Autofac, ale usługa uległa awarii w konstruktorze:
public ActionFilterAttribute() { _service = ContainerManager.Resolve<IService>(); } public class Service: IService { public Service() { throw new Exception('Oops!'); } }
źródło
W moim przypadku ani funkcje systemu Windows, ani
aspnet_regiis -i
nie zadziałały. Po godzinach kopania w internecie stworzyłem własne rozwiązanie:W Menedżerze IIS w modułach zmieniłem dziedziczenie na lokalne w węźle UrlRoutingModule-4.0:
W web.config wkleiłem kilka porad z tego forum:
<system.webServer> <modules runAllManagedModulesForAllRequests="true"> <remove name="UrlRoutingModule-4.0"></remove> <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition=""></add> </modules> </system.webServer>
Mam nadzieję, że to pomoże
źródło