我有一个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
的正确方法是什么?
答案 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>