在ASP.NET Core RC2中重写URL

twi*_*ams 10 url-rewriting asp.net-core

如何在ASP.NET Core RC2中完成URL重写?当我刷新页面时,从RC1迁移到RC2打破了我的Angular 2路由.

我之前在我的wwwroot中的web.config中使用了这样的规则.使用RC2我甚至不确定我是否应该在我的wwwroot中有一个web.config,或者我应该在我的项目的基础上有一个.

这是我的基础web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" forwardWindowsAuthToken="true" stdoutLogEnabled="true" />
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

这是我的wwwroot web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <!--Redirect selected traffic to index -->
        <rule name="Index Rule" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_URI}" matchType="Pattern" pattern="^/api/" negate="true" />
            <add input="{REQUEST_URI}" matchType="Pattern" pattern="^/account/" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

当我刷新一个有角度的2路线时,我Status Code: 404; Not Found从ASP.NET 获得了一个

小智 1

我找到了史蒂夫桑德森的解决方案,似乎有效。他为 RouteBuilder 编写了扩展。您可以通过调用扩展方法MapSpaFallbackRoute在Setup.cs中配置它

https://github.com/aspnet/JavaScriptServices

app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
                routes.MapSpaFallbackRoute("spa-fallback", new { controller = "Home", action = "Index" });
            });
Run Code Online (Sandbox Code Playgroud)