捕获所有干扰静态文件的路由

时间:2018-08-27 18:34:55

标签: asp.net-mvc asp.net-core

我正在尝试将所有未映射的URL路由到后备路由,如果路由未映射,我将控制请求的行为。以下是启用此功能的代码。该站点还启用了SPA,并且通过添加回退捕获所有路由,除非我添加排除约束,即不以“ -ng”结尾的任何路由都不会路由到此回退,否则SPA停止工作。 / p>

app.UseStaticFiles();
app.UseSpaStaticFiles();

app.UseMvc(routes => {
    routes.MapRoute(
        name: "default",
        template: "{controller}/{action}/{id?}",
        defaults: new { controller = "Home", action ="Index" }
    );

    routes.MapRoute(
        name: "fallback",
        template: "{*slug}",
        defaults: new { controller = "Fallback", action = "Index" },
        constraints: new
        {
            serverRoute = new ServerRouteConstraint(url => !url.PathAndQuery.EndsWith("-ng", StringComparison.InvariantCultureIgnoreCase))
        }
    );
});

app.UseSpa(spa =>
{
    spa.Options.SourcePath = "ClientApp";

    if (env.IsDevelopment())
    {
        spa.UseAngularCliServer(npmScript: "start");
    }
});

排除约束似乎已经完成了工作,但现在看来我也必须向静态文件添加排除约束。我想避免通过文件扩展名排除,但这使我认为UseSpaStaticFiles调用仅被后备路由覆盖。

如果有办法让SPA路由优先于我的后备路由,那将有帮助。或有一种方法可以在回退之前按本地目录路由所有静态文件。

0 个答案:

没有答案