アプリケーションのデプロイに問題があり、トラブルシューティング中に、Views
フォルダーのWeb.Config
ファイルに遭遇しました。ソースの可能性を問題に絞り込むために、その〜Web.Config`ファイルの目的を見つけようとしましたが、実際には多くの情報を見つけることができませんでした。
だから基本的に私の質問は:
Views
フォルダーでWeb.config
ファイルは何をしますか?Asp.Net webformsでは、フォルダーで別のweb.configファイルを使用するには、そのフォルダーをIISで仮想フォルダーとして設定する必要があると思います。これはMVCの場合ですか(つまり、Views
フォルダーを仮想フォルダーとして構成する必要がありますか)?
いいえ、この余分な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"/>
名前空間のインポートなどのビューのコンパイラを構成し、viewsフォルダーに404を返します。
ビューフォルダー内のweb.configファイルは、ビューフォルダー内のページに適用する特別な設定を行うためのものです。
接続文字列/ appsettingsなどのような設定のように.
ただし、それはそのフォルダーにのみ適用され、プロジェクトの残りの部分はルートにあるweb.configから設定を取得します。
特にエリアの概念を使用する場合、各エリアに個別の設定を適用できる個別のweb.cfgファイルを含む各エリアに個別のフォルダーがあります。
それは、上のweb.config
、つまり、Views
フォルダーのスコープ内で何かをカスタマイズしたい場合。