Was macht die Web.Config-Datei im Ansichtsordner eines MVC-Projekts?

85

Ich habe einige Probleme bei der Bereitstellung meiner Anwendung und bin bei der Fehlerbehebung auf die Web.ConfigDatei im ViewsOrdner gestoßen. Um die Möglichkeiten der Quellen für mein Problem einzugrenzen, habe ich versucht, den Zweck dieser ~ Web.Config-Datei herauszufinden, kann aber nicht wirklich viele Informationen finden.

Meine Fragen sind also im Grunde:

  1. Was macht die Web.configDatei im ViewsOrdner eines MVC-Projekts?
  2. Ist es erforderlich?

In Asp.Net-Webformularen muss dieser Ordner in IIS als virtueller Ordner festgelegt werden, um eine separate web.config-Datei in einem Ordner zu verwenden. Ist dies in MVC der Fall (dh muss der ViewsOrdner als virtueller Ordner konfiguriert werden)?

Ola Karlsson
quelle
14
Es gibt keine "dummen" Fragen
contactmatt
7
Hab niemals Angst, "dumme" Fragen zu stellen. Wenn Sie die Antwort nicht kennen, ist sie nicht "dumm". Nichts "Dummes" daran, etwas besser zu verstehen.
DazManCat
3
SO ist bekannt dafür, Benutzer in Napalm zu übergießen, um Fragen zu stellen ...
Pangamma

Antworten:

79

Nein, aufgrund dieser zusätzlichen Datei web.config müssen Sie keinen virtuellen Ordner konfigurieren.

Die Datei web.config befindet sich in den Ordnern "Ansichten", um den Zugriff auf Ihre Ansichten auf andere Weise als über Ihren Controller zu verhindern. Im MVC-Entwurfsmuster sollen Controller Anforderungen weiterleiten und eine gerenderte Ansicht an den aufrufenden Client zurückgeben.

Mit anderen Worten, Ihre Ansicht unter www.mydomain.com/MySuperController/AwesomeAction1/SweetPage.aspx sollte nicht direkt zugänglich sein.

Wenn Sie einen Blick auf die Datei web.config werfen, werden tatsächlich HttpNotFoundHandleralle Pfade und Verben registriert :

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

Oder in IIS 7 könnte es so aussehen

<add name="BlockViewHandler" path="*.aspx" verb="*" 
    preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
David Fox
quelle
21
Aber die generierte web.config enthält eine große Menge anderen Textes - ist das alles überflüssig?
Eamon Nerbonne
7

Es konfiguriert den Compiler für die Ansichten wie das Importieren von Namespaces und lässt den Ansichtsordner einen 404 zurückgeben.

Daniel A. White
quelle
7

Die Datei web.config im Ansichtsordner enthält einige spezielle Einstellungen, die Sie auf Seiten im Ansichtsordner anwenden möchten.

Wie Konfigurationseinstellungen wie: Verbindungszeichenfolge / Appsettings etc.

Dies gilt jedoch nur für diesen Ordner, und der Rest des Projekts übernimmt die Einstellungen aus der web.config im Stammverzeichnis.

Insbesondere wenn Sie das Bereichskonzept verwenden, gibt es für jeden Bereich einen separaten Ordner mit einer separaten web.cfg-Datei, in der Sie für jeden Bereich separate Einstellungen vornehmen können.

Prajwal
quelle
6

Dies ist der Fall, wenn Sie etwas überschreiben möchten, das oben erwähnt wurde web.config, dh wenn Sie etwas im Bereich des ViewsOrdners anpassen möchten .

Ken D.
quelle