O que o arquivo Web.Config faz na pasta de visualizações de um projeto MVC

85

Estou tendo alguns problemas para implantar meu aplicativo e, durante a solução de problemas, encontrei o Web.Configarquivo na Viewspasta. Na tentativa de restringir as possibilidades de fontes para o meu problema, tentei descobrir o propósito daquele arquivo ~ Web.Config`, mas não consigo encontrar muitas informações.

Então, basicamente, minhas perguntas são:

  1. O que o Web.configarquivo faz na Viewspasta de um projeto MVC?
  2. É necessário?

Em webforms Asp.Net, acredito que para usar um arquivo web.config separado em uma pasta, essa pasta deve ser definida como uma pasta virtual no IIS. É esse o caso no MVC (ou seja, a Viewspasta precisa ser configurada como uma pasta virtual)?

Ola Karlsson
fonte
15
Não há perguntas "estúpidas"
contactmatt
8
Nunca tenha medo de fazer perguntas "estúpidas". Se você não sabe a resposta, então não é "estúpido". Nada de "estúpido" em entender melhor alguma coisa.
DazManCat
4
SO é conhecido por encharcar usuários de napalm por
fazerem

Respostas:

79

Não, você não precisa configurar uma pasta virtual por causa deste arquivo web.config extra.

O arquivo web.config existe nas pastas Views para impedir o acesso às suas views por qualquer meio diferente do controlador. No padrão de projeto MVC, os controladores devem rotear solicitações e retornar uma visualização renderizada para o cliente de chamada.

Em outras palavras, sua visualização em www.mydomain.com/MySuperController/AwesomeAction1/SweetPage.aspx não deve ser diretamente acessível.

Se você olhar o arquivo web.config, ele realmente registra o HttpNotFoundHandlerpara todos os caminhos e verbos:

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

Ou, no IIS 7, pode parecer

<add name="BlockViewHandler" path="*.aspx" verb="*" 
    preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
David Fox
fonte
21
Mas o web.config gerado contém uma grande quantidade de outro texto - tudo isso é redundante?
Eamon Nerbonne
7

Ele configura o compilador para as visualizações, como a importação de namespaces, e faz com que a pasta de visualizações retorne um 404.

Daniel A. White
fonte
7

O arquivo web.config na pasta de visualizações faz algumas configurações especializadas que você deseja aplicar às páginas dentro da pasta de visualizações.

Como configurações de configuração como: string de conexão / appsettings etc.

mas isso será aplicável apenas a essa pasta e o resto do projeto pegará as configurações do web.config presente na raiz.

Especialmente quando você usa o conceito de área, haverá uma pasta separada para cada área contendo um arquivo web.cfg separado, onde você pode aplicar configurações separadas para cada área.

Prajwal
fonte
6

Isso se você quiser sobrescrever algo mencionado na parte superior web.config, ou seja, se quiser personalizar algo dentro do escopo da Viewspasta.

Ken D
fonte