.Net Core 开发中遇到的问题列表 (不定期更新)

1. MapSpaFallbackRoute 导致 swagger 无法使用

最近在业余时间用dotnet core 2.0开发一个开源项目,采用的是react+redux+webapi的方式,今天打算把swagger给引进来,结果发现在本地无法访问http://127.0.0.1/swagger, 调试了一下,最后发现是Startup的Configure方法配置有问题。

当使用dotnet创建项目的使用,dotnet默认会在Startup文件中的Configure方法添加一条这样的路由规则,为了让swagger跑起来,只要把这个路由规则删掉就可以了。

app.UseMvc(routes =>
{
  routes.MapSpaFallbackRoute(
  name: "spa-fallback",
  defaults: new { controller = "Home", action = "Index" });
});

或者还有另外一个方案就是把app.UserSwagger()放到MapSpaFallbackRoute的前面,这主要和Asp.Net Core中间件的使用加载顺序有关。

问题解决了,那么我们来看看MapSpaFallbackRoute到底是什么?为什么会有MapSpaFallbackRoute呢?

它的主要目的是让前端可以处理404的问题,当请求的request url都没有匹配到route,那么MapSpaFallbackRoute会把请求跳转到Home.Index, 交由前端来处理。 

碰到的一个问题是,在处理/api的后端接口时,我们并不希望后端的接口也返回404,所以可以通过下面的代码过滤/api的后端API请求

app.MapWhen(x => !x.Request.Path.Value.StartsWith("/api"), builder =>
{
    builder.UseMvc(routes =>
    {
        routes.MapSpaFallbackRoute(
        name: "spa-fallback",
        defaults: new { controller = "Home", action = "Index" });
    });
});
原文地址:https://www.cnblogs.com/unclechan/p/7574811.html