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

使用Services.AddAuthentication()导致ASP.NET Core应用启动终止

ASP.NET Core 7 WebAPI 添加自定义认证处理器后启动异常退出的排查与解决

问题现象

在基于.NET 7 SDK通过dotnet new webapi创建的基础WebAPI项目中,添加自定义Basic认证处理器后,应用在服务器B上启动时会在完成前突然退出,无任何异常信息或日志输出,Windows注册表也无相关记录。本地开发环境及服务器A上运行正常。

添加认证处理器的代码如下:

builder.Services.AddAuthentication()
        .AddScheme<AuthenticationSchemeOptions, BasicAuthenticationHandler>(
            BasicAuthenticationDefaults.AuthenticationScheme, null);

BasicAuthenticationHandler逻辑仅包含:读取Authorization请求头、移除Basic 前缀、Base64解码凭证、校验凭证是否存在于预设的Dictionary<string,string>中。

开启详细日志后,发现进程在执行DPAPI密钥解密步骤后终止,日志片段如下:

[System         ][DBUG][23-11-17T14:27:54.9231+01:00][0][        Microsoft.Extensions.Hosting.Internal.Host]`Hosting starting`
[System         ][INFO][23-11-17T14:27:55.4962+01:00][0][NetCore.DataProtection.KeyManagement.XmlKeyManager]`User profile is available. Using 'C:\Users\p.dicaprio.extblar\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.`
[System         ][DBUG][23-11-17T14:27:55.5027+01:00][0][ataProtection.Repositories.FileSystemXmlRepository]`Reading data from file 'C:\Users\p.dicaprio.extblar\AppData\Local\ASP.NET\DataProtection-Keys\key-70202a7b-a057-403b-b974-5060170571f3.xml'.`
[System         ][DBUG][23-11-17T14:27:55.5232+01:00][0][NetCore.DataProtection.KeyManagement.XmlKeyManager]`Found key {70202a7b-a057-403b-b974-5060170571f3}.`
[System         ][DBUG][23-11-17T14:27:55.5363+01:00][0][re.DataProtection.KeyManagement.DefaultKeyResolver]`Considering key {70202a7b-a057-403b-b974-5060170571f3} with expiration date 2024-02-15 13:20:05Z as default key.`
[System         ][DBUG][23-11-17T14:27:55.5390+01:00][0][.AspNetCore.DataProtection.TypeForwardingActivator]`Forwarded activator type request from Microsoft.AspNetCore.DataProtection.XmlEncryption.DpapiXmlDecryptor, Microsoft.AspNetCore.DataProtection, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60 to Microsoft.AspNetCore.DataProtection.XmlEncryption.DpapiXmlDecryptor, Microsoft.AspNetCore.DataProtection, Culture=neutral, PublicKeyToken=adb9793829ddae60`
[System         ][DBUG][23-11-17T14:27:55.5429+01:00][0][ore.DataProtection.XmlEncryption.DpapiXmlDecryptor]`Decrypting secret element using Windows DPAPI.`

另外,app.Run()已被try/catch(Exception)包裹,但捕获块未输出任何日志。

解决方法

联系服务器B的运维提供商,将应用程序所在文件夹添加到Sophos杀毒软件的排除列表后,应用恢复正常启动,完整日志片段如下:

[System         ][DBUG][23-11-21T07:07:43.1380+01:00][0][ore.DataProtection.XmlEncryption.DpapiXmlDecryptor]`Decrypting secret element using Windows DPAPI.`
[System         ][DBUG][23-11-21T07:07:43.1733+01:00][0][.AspNetCore.DataProtection.TypeForwardingActivator]`Forwarded activator type request from Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60 to Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Culture=neutral, PublicKeyToken=adb9793829ddae60`
[System         ][DBUG][23-11-21T07:07:43.1828+01:00][0][atedEncryption.CngCbcAuthenticatedEncryptorFactory]`Opening CNG algorithm 'AES' from provider 'null' with chaining mode CBC.`
[System         ][DBUG][23-11-21T07:07:43.1842+01:00][0][atedEncryption.CngCbcAuthenticatedEncryptorFactory]`Opening CNG algorithm 'SHA256' from provider 'null' with HMAC.`
[System         ][DBUG][23-11-21T07:07:43.1857+01:00][0][tCore.DataProtection.KeyManagement.KeyRingProvider]`Using key {70202a7b-a057-403b-b974-5060170571f3} as the default key.`
[System         ][DBUG][23-11-21T07:07:43.1890+01:00][0][ataProtection.Internal.DataProtectionHostedService]`Key ring with default key {70202a7b-a057-403b-b974-5060170571f3} was loaded during application startup.`
[System         ][INFO][23-11-21T07:07:43.3196+01:00][0][                        Microsoft.Hosting.Lifetime]`Now listening on: http://0.0.0.0:5000

原因推测

Sophos杀毒软件的防护规则拦截了ASP.NET Core DataProtection模块的DPAPI密钥解密操作,导致应用进程被强制终止,因此无法捕获到异常或生成相关日志。

内容的提问来源于stack exchange,提问作者Pietro di Caprio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 03:30:04