ASP.MVCでIgnoreRoute
-
21-09-2019 - |
質問
私は、ビューディレクトリ内の.jsファイルにアクセスしようとしています。 私は/Views/Home/MyControl.ascxでMVCアプリケーションを持っています 私は、JSファイルを持っている/Views/Home/MyControl.js
私は.jsファイルを参照し、コントロールとそれを維持したいです。 私は、ルーティングに次のエントリを試してみましたが、どれも動作するようには思えません。
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{file}.js");
routes.IgnoreRoute("{resource}.js/{*pathInfo}");
routes.IgnoreRoute("{controller}/{resource}.js/{*pathInfo}");
routes.IgnoreRoute("{*alljs}", new { alljs = @".*\.js(/.*)?" });
は、スクリプトディレクトリに.jsファイルを追加することをお勧めしないでください助けてください。 私はそれがこのように動作させる、またはそれを行うことができない理由を知っていると思います。
私はスクリプトのデバッグはVS2010 B2に分割され、ページにスクリプトをかけることになります。
のおかげで よろしく クレイグます。
解決
Views
フォルダはよくビューのために、である、とJavaScriptは別の場所に配置する必要があります。 MVCフレームワークの設計者は任意のファイル内部へのアクセスを拒否し、このweb.config
フォルダにViews
を置く理由です。あなたはこのdefaut設定を変更することができますが、これは潜在的なセキュリティホール可能性があると警告します。
web.config
フォルダにあるViews
ファイルを開き、
に置き換えます:
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
と
<httpHandlers>
<add path="*.aspx" verb="*" type="System.Web.HttpNotFoundHandler"/>
<add path="*.master" verb="*" type="System.Web.HttpNotFoundHandler"/>
<add path="*.ascx" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
移動にhttp://yoursite/Views/test.js
P.S。また、あなたがIgnoreRoutes
に入れ、すべてのglobal.asax
を削除することができます。
他のヒント
でしょう、これはDefaultHttpHandlerを使用して、より良い解決策ではありません HTMLリソースのと
ファイルの他のすべてのタイプのためにHttpNotFoundHandlerを保ちます<httpHandlers>
<add path="*.html" verb="*" type="System.Web.DefaultHttpHandler"/>
<add path="*.*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
実際にはIISが統合モードのために、あなたはSystem.Web.StaticHttpHandler
を使用する必要があります:
<httpHandlers>
<add path="*.css" verb="*" type="System.Web.StaticHttpHandler"/>
<add path="*.js" verb="*" type="System.Web.StaticHttpHandler"/>
<add path="*.*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
IISクラシックモードではどうやらSystem.Web.DefaultHttpHandler
作品だけます。
でMVC 4 IハンドラセクションなどのhttpHandlersセクションを更新する必要がありました。
私は以下のフォルダビューでweb.configファイルを更新します。
<httpHandlers>
<add path="*.aspx" verb="*" type="System.Web.HttpNotFoundHandler"/>
<add path="*.cshtml" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<handlers>
<remove name="BlockViewHandler" />
<add name="BlockViewHandlerRazor" path="*.cshtml" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
<add name="BlockViewHandlerAspx" path="*.aspx" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>