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

本文关键字:根目录 一样 NET-MVC ASP 文件 | 更新日期: 2023-09-27 18:32:01

我有一个 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文件(但欢迎任何工作方式)。

附言我知道我可以编写自己的控制器来执行此操作,但是,据我了解,它将比内置的静态文件处理程序慢。我正在努力寻找更好的解决方案。提前谢谢。

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

Okey,因此,与往常一样,在接下来的 5 分钟内遇到答案的保证方法是最终在 SO 上提问。

答案是 IIS URL 重写模块。在这里找到有关它的信息

您需要将其添加到您的 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>