C# ASP.NET-MVC为目录中的文件提供服务,就像它们位于根目录中一样

C# ASP.NET-MVC为目录中的文件提供服务,就像它们位于根目录中一样,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个ASP.NET-MVC5项目,客户端是用AngularJS编写的单页应用程序,启动它只需要静态文件,C控制器不提供HTML,它们只处理AJAX调用。为方便起见,Angular part.html、.js、.css的所有静态文件都位于根目录中的WebClient目录中 在www.my-app.com/webclient/index.html这样的路径上,一切都可以正常工作,但我希望它只在www.my-app.com/index.html上工作。为此,我需要将WebClient目录映射到根地

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

在www.my-app.com/webclient/index.html这样的路径上,一切都可以正常工作,但我希望它只在www.my-app.com/index.html上工作。为此,我需要将WebClient目录映射到根地址。最好的方法是什么?最好只使用Web.config文件,但欢迎使用任何工作方式


另外,我知道我可以编写自己的控制器来实现这一点,但据我所知,它将比内置的StaticFileHandler慢。我正试图找到更好的解决办法。提前谢谢。

好的,所以,像往常一样,在接下来的5分钟内找到答案的保证方法是最后问这个问题

答案是IIS URL重写模块。找到了上面的信息

您需要将其添加到Web.config中。regexp仍然需要一些工作来屏蔽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>