<modules runAllManagedModulesForAllRequests = “true” /> Significado


135

Eu queria saber qual é o significado de

<modules runAllManagedModulesForAllRequests="true" />

Estou usando o IIS 7.5 e tenho um aplicativo da web simples. Preciso escrever isso no meu arquivo web.config. Eu também escrevi alguns manipuladores http para a chamada jquery ajax. Estou usando autenticação de formulário e asp.net 4.0.

Como posso determinar qual módulo devo executar e qual não deve ser?

Respostas:


123

Condições prévias dos módulos:

O mecanismo principal do IIS usa pré-condições para determinar quando habilitar um módulo específico. Os motivos de desempenho, por exemplo, podem determinar que você deseja executar módulos gerenciados apenas para solicitações que também vão para um manipulador gerenciado. A pré-condição no exemplo a seguir ( precondition="managedHandler") ativa apenas o módulo de autenticação de formulários para solicitações que também são tratadas por um gerenciador gerenciado, como solicitações para arquivos .aspx ou .asmx:

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

Se você remover o atributo precondition="managedHandler", a autenticação de formulários também se aplicará ao conteúdo que não é servido por manipuladores gerenciados, como .html, .jpg, .doc, mas também para extensões clássicas ASP (.asp) ou PHP (.php). Consulte " Como aproveitar as vantagens do pipeline integrado do IIS " para obter um exemplo de habilitação de módulos ASP.NET para execução de todo o conteúdo.

Você também pode usar um atalho para permitir que todos os módulos gerenciados (ASP.NET) sejam executados para todas as solicitações em seu aplicativo, independentemente da " managedHandler" condição prévia.

Para permitir que todos os módulos gerenciados sejam executados para todas as solicitações sem configurar cada entrada de módulo para remover a managedHandlerpré-condição " ", use a runAllManagedModulesForAllRequestspropriedade na <modules>seção:

<modules runAllManagedModulesForAllRequests="true" />    

Quando você usa esta propriedade, a " managedHandler" condição prévia não tem efeito e todos os módulos gerenciados são executados para todas as solicitações.

Copiado da Visão geral dos módulos IIS: condições prévias


é bom rodar todos os modelos para todo pedido ou serei mais específico ai. Isso afeta a velocidade do aplicativo?

2
Sim, haverá problema de desempenho. Você deve usar a pré-condição.
Kapil Khandelwal de

3
então, como devo decidir qual módulo devo usar e qual não.

6
Uma pergunta de acompanhamento. Vejo que é possível habilitar módulos separados também, em vez de todos. Veja minha pergunta ( stackoverflow.com/questions/20998816/… ), a solução que havia para adicionar <modules runAllManagedModulesForAllRequests="true">. Mas vejo agora que pode criar sobrecarga. Então, existe um módulo específico responsável que posso habilitar para obter o ponto "." em MVC WebAPI Url, em vez de apenas habilitar todos com <modules runAllManagedModulesForAllRequests="true">? É, por exemplo, o módulo "UrlAuthorization"?
Yves Schelpe

adicionar a seção de tags de módulos funciona para mim. Eu uso MVC 5, .net framework 4.5.0, IIS 7 e Windows Server 2008
gavin

-11

adicione o código abaixo em web.config

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

4
porque eu gostaria de adicionar?
25 de
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.