[asp.net-mvc]ASP.NET MVC 扩展名的文件的路径

发布时间: 2016/10/9 5:58:56
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

在 ASP.NET MVC5 使用基于属性的路由,我想要处理 Url 的文件扩展名,如

~/javascript/security.js

这里是一个示例控制器操作方法︰

    [Route("javascript/security.js")]
    public ActionResult AngularSecurityModule(string clientId)
    {
        return View(new
                    {
                        ClientId = clientId
                    });
    }

然而,这给了我 HTTP 404-找不到。

我宁愿不使用 runAllManagedModulesForAllRequests (eg

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>

) 因为那会损害其他静态文件在 web 应用程序的性能。

解决方法 1:

原来答案是,只需注册该 URL 的正确处理程序即添加

<add name="JavascriptSecurityJs" path="javascript/security.js" verb="GET" type="System.Web.Handlers.TransferRequestHandler"    
      preCondition="integratedMode,runtimeVersionv4.0" />

到我 system.webServer/handlers 是成功的关键。 为完整起见,这里是整个 system.webServerweb.config :

<system.webServer>
  <handlers>
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
    <remove name="OPTIONSVerbHandler" />
    <remove name="TRACEVerbHandler" />
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    <add name="JavascriptSecurityJs" path="javascript/security.js" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
  </handlers>
</system.webServer>

有一点非常好的这是 IIS 静态文件处理是仍然存在的所有静态文件。

官方微信
官方QQ群
31647020