ASP.NET-MVC在目录中提供文件,就像它们在root中一样

时间:2014-11-25 19:50:45

标签: c# asp.net-mvc

我有一个ASP.NET-MVC5项目,客户端是用AngularJS编写的单页面应用程序(只有启动它的静态文件,C#控制器不提供HTML,它们只处理AJAX调用)。为方便起见,Angular部分的所有静态文件(.html,.js,.css)都位于根目录中的WebClient目录中。

使用www.my-app.com/webclient/index.html之类的路径,一切正常,但我希望它只与www.my-app.com/index.html一起使用。为此,我会以某种方式将WebClient目录映射到根地址。做这个的最好方式是什么?最好只使用Web.config文件(但欢迎任何工作方式)。

P.S。我知道我可以编写自己的控制器来执行此操作,但据我所知,它将比在StaticFileHandler中构建的更慢。我正在努力寻找更好的解决方案。提前谢谢。

1 个答案:

答案 0 :(得分:0)

Okey,所以,一如既往,在接下来的5分钟内遇到答案的保证方式是最终在SO上提问。

答案是IIS URL重写模块。找到关于它的信息here

您需要将此添加到Web.config中(正则表达式仍然需要一些工作来屏蔽API路由并添加所有可能的符号)

  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Route root to WebClient" stopProcessing="true">
            <match url="^([_0-9a-z-./\?]+)" />
            <action type="Rewrite" url="WebClient/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>