ASP.. NET Core: UsePathBase从path中提取pathbase,但MapC



我在dotnet 2.1应用程序中使用了UsePathBase。

app.UsePathBase("/app1"); // extract /app1 from path 
app.UseMvc(routers => ...) // routes consider path only

这不再工作在dotnet 6:当我使用

app.UsePathBase("/app1");
app.MapControllers(); // controller routing does not consider the reduced path

虽然之前

"/app1/home/index" routed to HomeController, Index method

现在无法路由到任何地方。

我做错了什么吗?

我被诊断为

app.Use((context, next) =>
{
Console.WriteLine("=> {0}", context);
return next.Invoke();
});

显示UsePathBase可以工作,是后面的路由在mapcontroller中不起作用。至少这是我从观察中得出的结论。

UsePathBase之后显式调用UseRouting:

app.UsePathBase("/app1");
app.UseRouting();
app.MapControllers(); 

阅读更多。

公立小学无法在。net 7解决方案中重现,只有。net 6解决方案,可能已经修复/恢复。

在。net 6中,UsePathBase中间件已被UseRouting中间件所取代。

UseRouting中间件负责路由和路径基处理。

在。net 6中设置路径基,你可以尝试这样做:

app.UseRouting(routes =>
{
routes.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}",
defaults: new { controller = "Home", action = "Index" },
constraints: new { id = new IntRouteConstraint() },
dataTokens: new { pathBase = "/app1" }
);
});

最新更新