Pergunta

Estou usando o ASP.NET MVC com o IIS 7.0. Eu tenho 404 erros conectados bem através da minha substituição Application_error.

Além de "controladores", "modelos", "ajudantes" etc. Eu tenho um diretório chamado 'arquivos' que eu uso para armazenar arquivos utilizados pelo usuário. Quando eu for para http://www.mysite.com/files, em vez de obter uma página 'não encontrada', recebo uma página padrão IIS 403 que fornece muita informação (por exemplo, estrutura de diretório exata do servidor):

HTTP Error 403.14 - Forbidden
The Web server is configured to not list the contents of this directory.

Se eu tentar acessar http://www.mysite.com/controllers ou http://www.mysite.com/helpers, que são diretórios existentes com arquivos de código, eu recebo uma página 404, que é o que eu quero. Não quero que o usuário saiba nada sobre minha estrutura de diretório.

Por que o MVC não está lidando com o diretório /arquivos?

Foi útil?

Solução

Eu descobri isso. O motivo pelo qual o diretório de visualizações estava retornando uma página '404' adequada, mas o diretório de arquivos estava retornando uma página de 'sem permissões' da MUITO-Informação: existe um arquivo web.config no diretório de visualizações que proíbe mostrar arquivos. Ele tem os trechos abaixo para impedir que o MVC atenda ao diretório.

Acabei de adicionar um arquivo web.config semelhante ao meu diretório de arquivos, e o MVC agora age como o diretório não existe, o que é exatamente o que eu quero.

    <httpHandlers>
      <add path="*" verb="*"
          type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
    </handlers>
  </system.webServer>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top