我在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" }
);
});