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

ASP.NET Core Identity登录后IIS Express异常退出(错误码-1)求助

ASP.NET Core Identity登录后应用意外退出(进程代码-1)

问题描述

集成ASP.NET Core Identity的应用中,用户成功登录后进程意外终止,日志显示:

_1101113.Areas.Identity.Pages.Account.LoginModel: Information: User logged in.
程序'[8984] iisexpress.exe'已退出,代码为-1 (0xffffffff)。

已尝试以下排查步骤:

  • 重启IIS Express服务器
  • 检查launchSettings.json中的应用配置
  • 确认环境变量设置正确

可能原因及解决方案

1. 认证Cookie配置异常

登录成功后生成认证Cookie时,若配置错误(如过期时间、SameSite属性、加密密钥问题)可能触发未处理异常导致进程崩溃。

解决方案:
检查Program.cs(或Startup.cs)中的Identity/认证配置,确保Cookie参数合法:

builder.Services.ConfigureApplicationCookie(options =>
{
    options.Cookie.HttpOnly = true;
    options.ExpireTimeSpan = TimeSpan.FromMinutes(30);
    options.SlidingExpiration = true;
    options.Cookie.SameSite = SameSiteMode.Lax;
    // 若使用自定义密钥,确保密钥配置正确
    // options.DataProtectionProvider = DataProtectionProvider.Create(new DirectoryInfo(@"C:\Keys"));
});

2. 登录后跳转逻辑存在未捕获异常

LoginModel的OnPostAsync方法中,跳转URL无效或存在空引用等未处理异常,会导致进程终止。

解决方案:
检查登录成功后的跳转逻辑,验证returnUrl的合法性:

var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
    _logger.LogInformation("User logged in.");
    // 验证跳转URL是否为本地合法地址
    if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl))
    {
        return LocalRedirect(returnUrl);
    }
    else
    {
        // 默认跳转到首页,避免无效跳转
        return RedirectToPage("/Index");
    }
}

3. 资源访问权限不足

登录后若应用尝试访问无权限的资源(如数据库、本地文件),会触发未处理异常导致进程退出。

解决方案:

  • 检查IIS Express应用池身份(默认是当前用户)是否有数据库(如LocalDB、SQL Server)的访问权限;
  • 排查登录后执行的用户数据加载逻辑(如获取角色、用户信息),确认是否存在数据库连接失败或权限问题。

4. 调试设置遗漏未捕获异常

默认调试设置可能忽略某些异常,导致进程直接终止而无错误提示。

解决方案:

  • 在Visual Studio中,打开「调试」→「选项」→「调试」→「常规」,取消勾选「仅我的代码」;
  • 打开「调试」→「窗口」→「异常设置」,勾选「Common Language Runtime Exceptions」,重新调试以捕获具体异常。

5. NuGet包版本冲突

ASP.NET Core与Identity相关包版本不匹配,会导致运行时冲突崩溃。

解决方案:
检查csproj文件中所有Microsoft.AspNetCore.*和Microsoft.AspNetCore.Identity.*包的版本,确保版本一致(如均为6.0.x、7.0.x),避免混合不同主版本号。

额外排查步骤

  • 启用详细日志:在appsettings.Development.json中提升日志级别至Debug,捕获崩溃前的详细日志:
{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "Microsoft.AspNetCore": "Debug",
      "Microsoft.AspNetCore.Identity": "Debug"
    }
  }
}
  • 添加全局异常捕获:在Program.cs中注册全局异常处理,记录未捕获异常:
var logger = builder.Services.BuildServiceProvider().GetRequiredService<ILogger<Program>>();
AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
{
    var exception = e.ExceptionObject as Exception;
    logger.LogCritical(exception, "未处理全局异常导致进程退出");
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:23:11