2009-08-31 11 views
27

ktoś wysłał mnie na link, aby pobrać próbki wzorcowej próbki ASP.NET MVC zauważyłem, że były 2 pliki web.config:dlaczego tam są 2 pliki web.config

  1. 1 w katalogu
  2. 1 w katalogu poglądów

Co jest tego powodem?

+0

Zobacz także to pytanie [tutaj] (http://stackoverflow.com/q/23509617) dla nowszych wersji MVC, ta sama zasada. – StuartLC

Odpowiedz

39

web.config w katalogu widoków ma tylko jedną istotną pozycję, która blokuje bezpośredni dostęp:

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

Jest to więc ktoś nie można ręcznie spróbować iść do http://www.yoursite.com/views/main/index.aspx i załadować stronę na zewnątrz rurociągu MVC.

+0

@Rex do którego pliku muszę dodać ciąg połączenia –

+0

@Pandiya root web.config, nie w katalogu Widoki (ani żadnego innego) –

+1

@RexM: Ładne wyjaśnienie. Dzięki –

4

Możesz mieć wiele web.configs do definiowania różnych ustawień dla tego folderu. Używane dla uprawnień i innych podobnych rzeczy.

6

/Views/Web.config

To nie jest główny plik web.config swojej aplikacji. To właśnie zawiera dyrektywę instruowania serwera WWW nie służyć żadnych plików * aspx pod /widoki (ponieważ powinny one być wydanego przez sterownik, nie wywołany bezpośrednio jak klasyczne WebForms * .aspx plików). Plik ten zawiera także konfigurację potrzebną do poprawnego działania standardowego kompilatora stron ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET: przy użyciu składni szablonu ASP.NET MVC .

/Web.config

ten definiuje aplikacja konfiguracja.

To z książki Pro ASP.NET MVC

12

Co Silky wspomnianym wyjątkiem przeredagowany.

W środowisku ASP .NET dzieje się coś w stylu dziedziczenia dla plików konfiguracyjnych. Masz plik Machine.config w folderze ramowym .net, który ma podstawowe ustawienia dla wszystkich aplikacji na komputerze. Wszystko, co określisz w głównym pliku web.config z tymi samymi znacznikami, zastąpi elementy w pliku machine.config.
Każdy plik web.config w podfolderze może przesłonić lub dodać dodatkowe ustawienia w tym podfolderze i jego elementach podrzędnych.

To dla mnie zawsze zabawne, gdy jeden z moich nowych programistów umieszcza w folderze głównym program obsługi http, a następnie wszystkie aplikacje w katalogach wirtualnych pod nim eksplodują, ponieważ nie mają biblioteki DLL (one powinien umieścić instrukcję obsługi protokołu http tylko w aplikacji, która tego wymagała, a nie w katalogu głównym). :)

Powiązane problemy