web-dev-qa-db-ja.com

MVCプロジェクトのビューフォルダーでWeb.Configファイルが行うこと

アプリケーションのデプロイに問題があり、トラブルシューティング中に、ViewsフォルダーのWeb.Configファイルに遭遇しました。ソースの可能性を問題に絞り込むために、その〜Web.Config`ファイルの目的を見つけようとしましたが、実際には多くの情報を見つけることができませんでした。

だから基本的に私の質問は:

  1. MVCプロジェクトのViewsフォルダーでWeb.configファイルは何をしますか?
  2. 必要ですか?

Asp.Net webformsでは、フォルダーで別のweb.configファイルを使用するには、そのフォルダーをIISで仮想フォルダーとして設定する必要があると思います。これはMVCの場合ですか(つまり、Viewsフォルダーを仮想フォルダーとして構成する必要がありますか)?

79
Ola Karlsson

いいえ、この余分なweb.configファイルがあるため、仮想フォルダーを構成する必要はありません。

Web.configファイルはViewsフォルダーに存在し、コントローラー以外の手段によるビューへのアクセスを防止します。 MVC設計パターンでは、コントローラーはリクエストをルーティングし、呼び出し元のクライアントにレンダリングされたビューを返すことになっています。

言い換えれば、www.mydomain.com/MySuperController/AwesomeAction1/SweetPage.aspxのビューは、notに直接アクセスできる必要があります。

Web.configファイルを覗くと、実際にすべてのパスと動詞にHttpNotFoundHandlerが登録されます。

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

または、IIS 7では次のようになります

<add name="BlockViewHandler" path="*.aspx" verb="*" 
    preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
76
David Fox

名前空間のインポートなどのビューのコンパイラを構成し、viewsフォルダーに404を返します。

7
Daniel A. White

ビューフォルダー内のweb.configファイルは、ビューフォルダー内のページに適用する特別な設定を行うためのものです。

接続文字列/ appsettingsなどのような設定のように.

ただし、それはそのフォルダーにのみ適用され、プロジェクトの残りの部分はルートにあるweb.configから設定を取得します。

特にエリアの概念を使用する場合、各エリアに個別の設定を適用できる個別のweb.cfgファイルを含む各エリアに個別のフォルダーがあります。

7
Prajwal

それは、上のweb.config、つまり、Viewsフォルダーのスコープ内で何かをカスタマイズしたい場合。

6
Kenan D