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

发布ASP.NET Core应用后显示默认登录页,提示需用其他服务登录

解决ASP.NET Core发布后显示默认登录页而非自定义页面的问题

我帮你梳理下几个关键问题,这些应该就是导致发布后登录页异常的核心原因:

1. 修正中间件顺序与弃用API问题

你的代码里使用了已被废弃的UseIdentity(),而且中间件的执行顺序存在错误,这会直接打乱认证流程。ASP.NET Core 2.1+版本后,官方推荐使用UseAuthentication()和UseAuthorization()组合,并且必须保证正确的执行顺序:

  • 移除app.UseIdentity();,它的功能已经被整合到UseAuthentication()和UseAuthorization()中
  • 新增app.UseAuthorization(),并确保它放在UseAuthentication()之后、UseMvc()之前
  • 修正UseStatusCodePages的写法,不要在内部嵌套调用UseStatusCodePagesWithRedirects,这会导致中间件逻辑冲突

修正后的Configure方法代码示例:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
        app.UseHsts();
    }

    // 针对403状态码跳转的正确写法
    app.UseStatusCodePages(context =>
    {
        var response = context.HttpContext.Response;
        if (response.StatusCode == StatusCodes.Status403Forbidden)
        {
            response.Redirect("~/Identity/Account/Login");
        }
        return Task.CompletedTask;
    });

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseCookiePolicy();
    app.UseSession();
    app.UseAuthentication();
    app.UseAuthorization(); // 新增该中间件,保证认证后执行授权逻辑

    CreateSignalRRouts(app);

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

2. 确认Identity UI的配置正确性

检查ConfigureServices方法中Identity的配置,确保正确关联了自定义页面所在的路由:

  • 如果使用自定义的Identity页面,要在AddIdentity后调用AddDefaultUI(),确保UI路由被正确注册
  • 确认自定义登录页的路径为Areas/Identity/Pages/Account/Login.cshtml,并且发布时该文件被正确包含(右键文件→属性→复制到输出目录设置为"如果较新则复制")

示例配置代码:

services.AddDefaultIdentity<IdentityUser>()
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultUI(); // 必须添加此方法,确保Identity UI路由生效

3. 检查生产环境的配置项

开发环境和生产环境的配置可能存在差异,重点检查appsettings.Production.json中的Cookie配置:

{
  "CookiePolicy": {
    "MinimumSameSitePolicy": "Lax",
    "HttpOnly": true,
    "Secure": true // 生产环境HTTPS下必须设为true,否则认证Cookie无法正常工作
  }
}

4. 清除浏览器缓存测试

发布后浏览器可能缓存了旧的页面或认证Cookie,导致显示异常。建议使用隐私窗口测试,或手动清除浏览器缓存后重试。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:16:16