如何修改ASP.NET MVC静态文件root

Alb*_*tVo 9 c# asp.net-mvc routing asp.net-mvc-3

我希望能够重新组织我的ASP.NET MVC站点结构,以更紧密地匹配Rails的方式(我们在我的公司同时使用rails和ASP.net).

在Rails中,有一个"公共"文件夹,表现为站点的根目录.例如,我可以放入"test.html"并使用url http://domain.com/test.html访问该文件,该文件将提供静态html文件.

在asp.net MVC中,有一个"内容"文件夹,我想表现为根.因此,我希望能够访问http://domain.com/myfile.html,而不是访问http://domain.com/content/myfile.html.

我知道我能不能别再文件中的项目的根,但我需要与许多文件,包括CSS,JS,HTML,图像等来做到这一点,要跨越铁轨和aspnetmvc分享一些标准化的资产.

有没有办法做到这一点?

Nat*_*Fox 8

还有另一种可能的解决方案 您可以使用重写规则来代替使用代码.如果您使用的是IIS 7或更高版本,则可以使用Microsoft的URL重写模块.

像下面这样的规则可能会这样做:

<rule name="Rewrite static files to content" stopProcessing="true">
  <match url="^([^/]+(?:\.css|\.js))$" />
  <conditions>
      <add input="{APPL_PHYSICAL_PATH}content{SCRIPT_NAME}" matchType="IsFile" />
  </conditions>
  <action type="Rewrite" url="/content/{R:1}" />
</rule>
Run Code Online (Sandbox Code Playgroud)

该规则检查对站点根目录下的css或js文件的请求.然后它检查文件是否存在于内容文件夹中.如果存在,则重写将返回内容文件夹中的文件.我只测试了一下,但似乎有效.它当然需要更多的测试和可能的改进.