【问题标题】:ASP MVC 2 handlers for extensionless urls in IIS 7.5 not workingIIS 7.5 中无扩展 url 的 ASP MVC 2 处理程序不起作用
【发布时间】:2012-07-17 16:39:16
【问题描述】:

我有一个带有 HttpHandler 的项目,当请求像 localhost/foo/bar 这样的无扩展 url 时应该执行该项目。我在本地 Visual Studio 开发服务器上正常工作(通过在 <system.web> 中使用 <httpHandlers> 而不是 <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

提前致谢, 巴特克

【问题讨论】:

    标签: asp.net asp.net-mvc-2 iis-7.5 httphandler


    【解决方案1】:

    在您的 web.config 中替换:

    path="/Home/Files/*"
    

    与:

    path="Home/Files/*"
    

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

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 2013-07-26
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 2016-08-07
      • 1970-01-01
      相关资源
      最近更新 更多