5

我有一个 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

4

1 回答 1

4

从头开始......<location>似乎工作正常。但是,您需要<web><webServer>条目以确保它适用于 IIS 和 Visual Studio 开发服务器。例如:

<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>
于 2013-11-13T04:07:48.417 回答