Co robi plik Web.Config w folderze widoków projektu MVC

85

Mam problemy z wdrożeniem aplikacji i podczas rozwiązywania problemów natknąłem się na Web.Configplik w Viewsfolderze. Próbując zawęzić możliwości źródeł mojego problemu, próbowałem znaleźć cel tego pliku ~ Web.Config`, ale tak naprawdę nie mogę znaleźć zbyt wielu informacji.

Zasadniczo moje pytania to:

  1. Co robi Web.configplik w Viewsfolderze projektu MVC?
  2. Czy to jest wymagane?

W przypadku formularzy internetowych Asp.Net uważam, że aby użyć oddzielnego pliku web.config w folderze, ten folder musi być ustawiony jako folder wirtualny w usługach IIS. Czy tak jest w przypadku MVC (tj. Czy Viewsfolder musi być skonfigurowany jako folder wirtualny)?

Ola Karlsson
źródło
15
Nie ma „głupich” pytań
contactmatt
8
Nigdy nie bój się zadawać „głupich” pytań. Jeśli nie znasz odpowiedzi, nie jest to „głupie”. Nie ma nic „głupiego” w lepszym zrozumieniu czegoś.
DazManCat
4
SO jest znany z polewania użytkowników napalmem za zadawanie pytań ...
Pangamma

Odpowiedzi:

79

Nie, nie musisz konfigurować folderu wirtualnego z powodu tego dodatkowego pliku web.config.

Plik web.config znajduje się w folderach widoków, aby uniemożliwić dostęp do widoków w jakikolwiek inny sposób niż za pomocą kontrolera. We wzorcu projektowym MVC kontrolery mają kierować żądania i zwracać renderowany widok do klienta wywołującego.

Innymi słowy, widok na www.mydomain.com/MySuperController/AwesomeAction1/SweetPage.aspx nie powinien być bezpośrednio dostępny.

Jeśli zajrzysz do pliku web.config, faktycznie rejestruje on HttpNotFoundHandlerwszystkie ścieżki i czasowniki:

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

Lub w usługach IIS 7 może to wyglądać

<add name="BlockViewHandler" path="*.aspx" verb="*" 
    preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
David Fox
źródło
21
Ale wygenerowany plik web.config zawiera ogromną ilość innego tekstu - to wszystko jest zbędne?
Eamon Nerbonne,
7

Konfiguruje kompilator pod kątem widoków, takich jak importowanie przestrzeni nazw, i sprawia, że ​​folder widoków zwraca 404.

Daniel A. White
źródło
7

Plik web.config w folderze views służy do wykonywania pewnych specjalistycznych ustawień, które chcesz zastosować do stron w folderze widoku.

Podobnie jak ustawienia konfiguracji, takie jak: parametry połączenia / ustawienia aplikacji itp.

ale będzie to miało zastosowanie tylko do tego folderu, a reszta projektu pobierze ustawienia z pliku web.config obecnego w katalogu głównym.

Szczególnie, gdy używasz koncepcji obszaru, dla każdego obszaru będzie osobny folder zawierający oddzielny plik web.cfg, w którym możesz zastosować osobne ustawienia dla każdego obszaru.

Prajwal
źródło
6

Dzieje się tak, jeśli chcesz zastąpić coś wymienionego w górnej części web.config, tj. Jeśli chcesz dostosować coś w zakresie Viewsfolderu.

Ken D.
źródło