<moduły runAllManagedModulesForAllRequests = „true” /> Znaczenie

135

Chciałem wiedzieć, jakie jest znaczenie

<modules runAllManagedModulesForAllRequests="true" />

Używam usług IIS 7.5 i mam prostą aplikację internetową. Czy muszę to zapisać w swoim pliku web.config. Napisałem też kilka programów obsługi http dla wywołania jquery ajax. Używam uwierzytelniania formularza i asp.net 4.0.

Jak mogę określić, który moduł mam uruchomić, a który nie?

शेखर
źródło

Odpowiedzi:

123

Moduły Warunki wstępne:

Podstawowy aparat usług IIS korzysta z warunków wstępnych, aby określić, kiedy włączyć określony moduł. Na przykład przyczyny związane z wydajnością mogą określać, że chcesz wykonywać zarządzane moduły tylko dla żądań, które również trafiają do zarządzanej procedury obsługi. Warunek wstępny w poniższym przykładzie ( precondition="managedHandler") włącza moduł uwierzytelniania formularzy tylko dla żądań, które są również obsługiwane przez zarządzaną procedurę obsługi, takich jak żądania do plików .aspx lub .asmx:

<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" />

Jeśli usuniesz atrybut precondition="managedHandler", uwierzytelnianie za pomocą formularzy będzie dotyczyło również treści, które nie są obsługiwane przez zarządzane programy obsługi, takie jak .html, .jpg, .doc, ale także klasycznych rozszerzeń ASP (.asp) lub PHP (.php). Zobacz „ Jak wykorzystać zintegrowany potok usług IIS ”, aby zapoznać się z przykładem włączania modułów ASP.NET do uruchamiania dla całej zawartości.

Można również użyć skrótu, aby umożliwić uruchamianie wszystkich modułów zarządzanych (ASP.NET) dla wszystkich żądań w aplikacji, niezależnie od „ managedHandler” warunku wstępnego.

Aby umożliwić uruchamianie wszystkich zarządzanych modułów dla wszystkich żądań bez konfigurowania każdego wpisu modułu w celu usunięcia managedHandlerwarunku wstępnego „ ”, użyj runAllManagedModulesForAllRequestswłaściwości w <modules>sekcji:

<modules runAllManagedModulesForAllRequests="true" />    

W przypadku korzystania z tej właściwości managedHandlerwarunek wstępny " " nie ma wpływu i wszystkie zarządzane moduły działają dla wszystkich żądań.

Skopiowano z modułów IIS Omówienie: warunki wstępne

Kapil Khandelwal
źródło
czy dobrze jest uruchomić wszystkie modele dla wszystkich żądań, czy też będę tam bardziej szczegółowo. Czy to wpływa na szybkość działania aplikacji?
शेखर
2
Tak, będzie problem z wydajnością. Zamiast tego powinieneś użyć warunku wstępnego.
Kapil Khandelwal
3
jak mam zdecydować, którego modułu mam użyć, a którego nie.
शेखर
6
Pytanie uzupełniające. Widzę, że zamiast wszystkich można również włączyć oddzielne moduły. Zobacz moje pytanie ( stackoverflow.com/questions/20998816/… ), rozwiązanie było do dodania <modules runAllManagedModulesForAllRequests="true">. Ale teraz widzę, że może to spowodować obciążenie. Czy jest więc konkretny moduł odpowiedzialny, który mogę włączyć, aby uzyskać kropkę "." w MVC WebAPI Url, zamiast po prostu włączać je wszystkie za pomocą <modules runAllManagedModulesForAllRequests="true">? Czy jest to na przykład moduł „UrlAuthorization”?
Yves Schelpe,
dodanie sekcji tag modules działa u mnie. Używam MVC 5, .net framework 4.5.0, IIS 7 i Windows Server 2008
gavin