【发布时间】:2014-04-01 04:59:06
【问题描述】:
在使用基于属性的路由的 ASP.NET MVC5 中,我想处理带有文件扩展名的 URL,例如
~/javascript/security.js
这是一个示例控制器操作方法:
[Route("javascript/security.js")]
public ActionResult AngularSecurityModule(string clientId)
{
return View(new
{
ClientId = clientId
});
}
但是,这给了我一个 HTTP 404 - 未找到。
我宁愿不使用 runAllManagedModulesForAllRequests(例如
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
) 因为这会损害 Web 应用程序中其他静态文件的性能。
【问题讨论】:
-
你怎么知道它会损害那些静态文件的性能?您是否尝试过两种方式,对每种方式进行了分析,并确定运行所有托管模块太慢(我真的怀疑)?如果你还没有,我不会担心。有很多流量高的网站都启用了该设置。
-
我最近没有测试过。这是一个公平的观点,但也非常依赖于运行什么 OWIN、MVC、Web API 过滤器,以及什么路由匹配。知道高流量站点使用它并不是那么相关 - 高流量站点可能还使用单独的服务器和 CDN 来存储静态文件。您能否提供有关该声明的更多信息?如果有人感兴趣,这里有一个迹象表明 runAllManagedModulesForAllRequests 可能并不理想:hanselman.com/blog/…
-
谢谢克雷格 - 我没看到那个,看了一圈。分辨率是一样的,所以看起来肯定是相似的。 Diff 是属性路由,我正在寻找文件扩展名。有什么建议可以确定这是否确实是一个骗局?
标签: asp.net-mvc asp.net-mvc-5 attributerouting