1

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

提前致谢, 巴特克

4

1 回答 1

1

在您的 web.config 中替换:

path="/Home/Files/*"

和:

path="Home/Files/*"

这样做的原因是,当您在 IIS 中托管应用程序时,会有一个虚拟目录名称,并且正确的路径是/MvcApplication1/Home/Files/*而不是/Home/Files/*. path通过在属性中使用相对 url,可以轻松解决此问题。

于 2012-07-18T09:43:53.857 回答