将HttpHandler添加到MVC应用程序

时间:2013-11-08 00:22:42

标签: asp.net-mvc httphandler

我有一个MVC4应用程序,我添加了HttpHandler

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

我也忽略了RegisterRoutes中的相关路径,因此MVC不处理对“文件”的请求:

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

问题是MyHttpHandler仅针对“文件”的请求而不是针对其任何子文件夹或子文件夹的请求进行调用。

我尝试过使用<location>元素,但要让它工作意味着您将在“path”属性中对应用程序的虚拟路径进行硬编码(例如,<location path='MyApp\Files'>)。

用于允许“文件”及其任何子文件夹(以及这些文件夹的子文件夹等)的所有请求路由到MyHttpHandler的正确方法是什么?

1 个答案:

答案 0 :(得分: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>