我有一个带有 HttpHandler 的项目,它应该在localhost/foo/bar
请求这样的无扩展名 url 时执行。我在本地 Visual Studio 开发服务器上正常工作(通过使用<httpHandlers>
in<system.web>
而不是<system.webServer><handlers>
)但是当部署到 IIS 7.5 时此功能不起作用(标准 404 错误:http: //i.imgur.com/YuNjT.jpg) . 此问题不仅限于无扩展名 URL(我可能会在最后添加任何扩展名并且问题仍然存在),但我想要的功能是在这种情况下使用无扩展名 url。我用谷歌搜索了一些信息,即无扩展名 URL 可能会导致一些问题,这就是我在这里提到它的原因。AppPool 设置为集成。我做了aspnet_regiis.exe -i。我在 IIS 服务器上安装了 Http 重定向功能。这是我的处理程序配置:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<add name="FileDownloadHandler" path="/Home/Files/*" verb="*" type="MvcApplication1.FileDownloadHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
</handlers>
<directoryBrowse enabled="true" />
</system.webServer>
这是我的路由设置:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("home/files/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我猜代码没问题,但我的 IIS 配置出了点问题。谁能指导我正确的方向?我已经用谷歌搜索了几天,但找不到对我有帮助的解决方案。这是一个示例项目(适用于本地 VS 开发服务器,但不适用于我的 IIS): http: //mapman.pl/MvcApplication1.zip
当您构建(并部署到本地 IIS)时,上述解决方案尝试请求这样的 url:http://localhost/MvcApplication1/Home/Files/foobar
提前致谢, 巴特克