You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 2.2升级至3.0后端点路由失效问题

ASP.NET Core 3.0升级后MVC端点无法访问问题解决

问题描述

将包含Razor Pages及MVC控制器的ASP.NET Core 2.2应用升级到3.0后,Razor Pages可正常运行,但访问MVC端点时,返回的是登录页面HTML而非预期的数据结构。在2.2版本中该功能正常,例如访问https://{mydomainname}/warhouse/orderlist原本能返回数据集,升级后会跳转至登录页。

原Startup.cs关键代码

app.UseRouting();   //Added for 3.0
app.UseSession();
app.UseAuthentication();
app.UseCookiePolicy();

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

// Added for 3.0
app.UseEndpoints(endpoints => endpoints.MapRazorPages());
app.UseEndpoints(endpoints => endpoints.MapControllerRoute(
         name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"));

问题原因

ASP.NET Core 3.0的端点路由系统中,多次调用UseEndpoints会导致路由配置异常。后续的UseEndpoints调用可能覆盖或干扰之前的路由注册,导致MVC控制器的路由未被正确识别,请求无法匹配到对应的端点,最终跳转至默认的登录页面(通常是Home/Index,而该页面需要登录授权)。

解决方案

将两次UseEndpoints调用合并为一次,在同一个UseEndpoints委托中同时注册Razor Pages和MVC控制器路由:

app.UseRouting();   //Added for 3.0
app.UseSession();
app.UseAuthentication();
app.UseCookiePolicy();

// 合并端点路由配置
app.UseEndpoints(endpoints => 
{
    endpoints.MapRazorPages();
    endpoints.MapControllerRoute(
        name: "default", 
        pattern: "{controller=Home}/{action=Index}/{id?}");
    // 若包含API控制器,需添加以下行:
    // endpoints.MapControllers();
});

说明

合并后的配置能确保Razor Pages和MVC控制器的路由规则都被正确加载,请求可准确匹配到对应的MVC端点,避免因路由匹配失败而跳转到登录页面。

内容的提问来源于stack exchange,提问作者JPicasso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 02:00:04