ASP.NET MVC 服务静态文件 routes.RouteExistingFiles = true

ASP.NET MVC Serve Static Files with routes.RouteExistingFiles = true

你好,刚接触 MVC 和路由。我习惯了虚拟目录、查询字符串等旧方法... ASP.NET Web Forms 和 Classic ASP 主要是我的背景。

我正在尝试学习 MVC,而且我总是从组织开始。我实际上不喜欢如何将每个模型视图控制器的所有内容都放入一个文件夹中。我想到了通过使用部分 classes 和初始存根并创建子文件夹来分离控制器代码的方法。但是我真的不喜欢那个主意……在我研究的过程中,我遇到了这个我喜欢的好例子

http://www.matthewrenze.com/articles/clean-architecture-in-asp-net-mvc-5/

除了在静态文件上我知道他在底部提到了一些关于设置 class 的东西,我让它工作。在我看来,我很难相信我必须将静态文件的识别编程到某个地方的 class 并将其连接到其他地方以便 Web 服务器为其提供服务。

我试过

routes.IgnoreRoute("{file}.js");
routes.IgnoreRoute("{file}.css");

这对我没有任何帮助。我什至尝试了一个简单的规则重定向

<rule name="Redirect Css Files" stopProcessing="true">
    <match url="^Content/*.css" />
    <action type="Redirect" url="/Content/Css/{R:1}" redirectType="Permanent" />
</rule>

导致无限循环....

我尝试了其他各种方法。我肯定错过了什么。就像我说的那样,不熟悉路由......在我学习节点时,我发现那里的路由比我在 .net 中更容易理解。

不胜感激...

谢谢!

好的,我明白了。我打错了例子

  <add name="BlockViewHandler" verb="*.cshtml" path="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />

应该是这个

  <add name="BlockViewHandler" path="*.cshtml" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />

我还发现,只要文件存在,即使路由不存在,它也应该始终使用它。这对我来说更有意义。

祝你好运,

安吉拉