ASP.NET MVC使用routes.RouteExistingFiles = true提供静态文件

时间:2016-11-18 01:20:23

标签: asp.net-mvc url-routing iis-8

新手MVC和路由。我习惯了以前的虚拟目录,查询字符串等等... ASP.NET Web Forms和Classic ASP主要是我的背景。

我正在努力学习MVC,就像我一样,我总是从组织开始。我实际上不喜欢每个模型视图控制器如何将所有内容都放入一个文件夹中。我想到了通过使用部分类和初始存根以及创建子文件夹来分离控制器代码的方法。但是我并不喜欢这个想法......在我研究过程中,我遇到了这个我喜欢的精彩例子

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

我有它的工作,除了我在底部知道的静态文件,他提到了一些关于设置类的事情。对于我的眼睛,我很难相信我必须将静态文件的识别编程到某个类的某个地方,并将其连接到其他地方,以便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中。

非常感谢帮助...

谢谢!

1 个答案:

答案 0 :(得分:0)

好吧我好好想通了。我输入的示例不正确

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

应该是这个

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

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

有一个好的,

安吉拉