IIS 7.5 ignorando manipuladores HTTP locais

1

Estou tentando fornecer um aplicativo de proxy simples para um serviço da web. Para este propósito, eu tenho um manipulador de HTTP que transmite qualquer solicitação para o meu site para outro site configurado no web.config. O proxy foi testado localmente e funciona perfeitamente. Eu testei no VS 2012 usando o IIS Express e em nosso servidor local que executa o Windows Server 2008 R2 e o IIS 7.5.

Agora, estou tentando há dias instalar esse aplicativo em nosso servidor de implantação, mas não adianta. Toda vez que tento acessar o aplicativo, ele ignora o fato de que registrei um manipulador no web.config e o manipulador StaticFile captura a solicitação. Parece que está ignorando o registro do meu manipulador.

Eu já tentei limpar todos os manipuladores no meu aplicativo e deixar apenas o HttpProxy que fiz, mas ele ainda chama StaticFile.

Aqui está a parte engraçada. Por acidente, configurei com êxito o manipulador de proxy no nó raiz do IIS. A partir daí, o manipulador funcionou no meu aplicativo, mas também quebrou todos os outros aplicativos no servidor, pois ele captura todas as solicitações e eles não tinham a DLL manipuladora instalada. Então funciona quando é herdado, mas não quando eu o configuro localmente.

Aqui está a seção webServer do meu web.config:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <handlers>
      <add name="ProxyHttpHandler"
           path="*"
           verb="*"
           type="DDProxy.ProxyHttpHandler, DDProxy"
           resourceType="Unspecified"
      />
    </handlers>
</system.webServer>

Basicamente estou perplexo porque parece que o IIS está ignorando as configurações que eu passo especificamente para este aplicativo. Alguma idéia?

EDIT: Pequeno desenvolvimento aqui. Parece que quando eu edito applicationhost.config as configurações passam para o aplicativo (mesmo quando eu uso o "local" para apontar meu aplicativo). Ainda assim, quando eu passar a configuração no web.config não tenho essa sorte. Tentei isso com o DirectoryListing.

    
por bsempe 20.05.2013 / 19:02

1 resposta

0

Se o site raiz tiver um web.config com manipuladores HTTP definidos ou outros nós system.webserver, o aplicativo abaixo pode estar herdando sua configuração do aplicativo raiz.

Você pode tentar bloquear a herança na configuração raiz do local do manipulador http:

<location path="." inheritInChildApplications="false">
  <system.webServer>
   ...
  </system.webServer>
</location>

Ou usando na configuração filho assim:

<system.webServer>
  <clear/>
  <modules runAllManagedModulesForAllRequests="true" />
    <handlers>
     <add name="ProxyHttpHandler"
       path="*"
       verb="*"
       type="DDProxy.ProxyHttpHandler, DDProxy"
       resourceType="Unspecified"
     />
    </handlers>
</system.webServer>

Agora você ainda pode encontrar um problema se tiver outros Httphandlers definidos no nó system.web na configuração raiz, então você pode querer limpá-lo em sua configuração filho:

<system.web>
   <httpHandlers>
     <clear />
   </httpHandlers>
</system.web>
    
por 28.05.2013 / 23:58