質問

MVC4アプリケーションがあり、それに追加しました HttpHandler:

<system.web>
    ...
    <httpHandlers>
        <add path="Files" verb="*" type="MyHttpHandler" />
    </httpHandlers>
</system.web>

また、関連するパスを無視しました RegisterRoutes そのため、「ファイル」へのリクエストはMVCによって処理されません。

routes.IgnoreRoute("Files/{*pathInfo}");

問題は、 MyHttpHandler 「ファイル」へのリクエストに対してのみ呼び出されますが、その子供やサブフォルダーのいずれでもありません。

使用しようとしました <location> 要素ですが、それを機能させるということは、「パス」属性のアプリケーションの仮想パスをハードコーディングすることを意味します(例: <location path='MyApp\Files'>).

「ファイル」のすべてのリクエストとそのサブフォルダー(およびそれらのフォルダーのサブフォルダーなど)のすべてのリクエストを許可するために使用する正しい方法は何ですか? MyHttpHandler?

役に立ちましたか?

解決

それをスクラッチ...<location> うまくいくようです。ただし、両方が必要です <web><webServer> IISとVisual Studio Development Serverの両方で機能することを確認するためのエントリ。例えば:

<location path="Files">`
    <system.webServer>
        <handlers>
            <add name="MyHandler" path="*" verb="*" type="MyHttpHandler" />
        </handlers>
    </system.webServer>
    <system.web>
        <httpHandlers>
            <add path="*" verb="*" type="MyHttpHandler" />
        </httpHandlers>
    </system.web>
</location>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top