C# 从2.2迁移到3.0后出现的问题,默认工作,但可以';t访问区域,是否仍要调试端点解析?

C# 从2.2迁移到3.0后出现的问题,默认工作,但可以';t访问区域,是否仍要调试端点解析?,c#,debugging,asp.net-core,.net-core,asp.net-core-3.0,C#,Debugging,Asp.net Core,.net Core,Asp.net Core 3.0,今天我将一个asp.net core 2.2应用程序迁移到了3.0,花了一点时间,但所有内容都重新编译,前面(默认)工作正常,但后面(单独的区域)我无法访问。我已经指定了这样的端点(按照迁移文档的建议,首先要更加具体): 这正是我在2.2中禁用UseMVC和端点时的配置 访问我所在区域的任何url(我只有一个)/返回到空白页 在连接了调试器的调试模式下运行时,“调试输出”窗口中绝对没有任何有价值的内容: Microsoft.AspNetCore.Hosting.Diagnostics: Info

今天我将一个asp.net core 2.2应用程序迁移到了3.0,花了一点时间,但所有内容都重新编译,前面(默认)工作正常,但后面(单独的区域)我无法访问。我已经指定了这样的端点(按照迁移文档的建议,首先要更加具体):

这正是我在2.2中禁用UseMVC和端点时的配置

访问我所在区域的任何url(我只有一个)/返回到空白页

在连接了调试器的调试模式下运行时,“调试输出”窗口中绝对没有任何有价值的内容:

Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request starting HTTP/2.0 GET https://localhost:44355/Back/  
Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request finished in 10.9489ms 404 
我在找到了一个用于路由的调试器,但它可以追溯到2008年,所以我怀疑它是否适用于端点路由

我能做些什么来检查端点解析中发生了什么


另外,为了确认这不是视图问题,也不是控制器崩溃,当我手动转到/back/home/index时,它从来没有进入相应的函数(在第一行设置断点)

我通过使用静态url开始,而不是{area:exists}来修复它,因为我在一个在线示例中发现,这听起来不像是“干净的”但它确实解决了我的问题,所以我的解决方案是从

app.UseEndpoints(endpoints =>
{
    endpoints.MapAreaControllerRoute("areas", "areas", "{area:exists}/{controller=Home}/{action=Index}/{id?}");
    endpoints.MapControllerRoute("default","{controller=Home}/{action=Index}/{id?}");
});


另外请注意,如果它导致了问题,或者它已经存在,但它破坏了标识ui路由(只有该区域具有身份验证,因此现在我被重定向到/identity/…而不是一个空白页面,正如预期的那样,但该页面现在是空白的)

您是否尝试过使用
endpoints.MapControllerRoute(“区域”,“{area area:exists}/{controller=Home}/{action=Index}/{id?}”);
而不是
MapAreaControllerRoute
?@KirkLarkin我没有,但那会很奇怪,MapAreaControllerRoute看起来像是我注册一个区域的合适工具。听起来像是用一个变通方法换另一个变通方法有同样的问题,但是我不同意最初的评论是另一个变通方法上面的答案是通过硬编码区域名称(模式和名称参数本身)来实现的,@KirkLarkin的建议适用于所有区域共用的路由。
app.UseEndpoints(endpoints =>
{
    endpoints.MapAreaControllerRoute("areas", "areas", "{area:exists}/{controller=Home}/{action=Index}/{id?}");
    endpoints.MapControllerRoute("default","{controller=Home}/{action=Index}/{id?}");
});
app.UseEndpoints(endpoints =>
{
    endpoints.MapAreaControllerRoute("Back", "Back", "back/{controller=Home}/{action=Index}/{id?}");
    endpoints.MapControllerRoute("default","{controller=Home}/{action=Index}/{id?}");
});