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

.NET Core 2.1迁3.1时IdentityServer4 PublicOrigin属性不存在报错

问题解决步骤

1. 修复NuGet包版本冲突

你的NuGet包存在多处版本不兼容问题,这是引发错误的核心原因:

  • IdentityServer4系列版本必须统一:当前IdentityServer4为4.1.2,但IdentityServer4.EntityFramework是2.5.3,两者版本不匹配。需将IdentityServer4.EntityFramework升级至4.1.2,确保所有IdentityServer4相关包版本一致。
  • ASP.NET Core版本匹配:项目基于.NET Core 3.1,但Microsoft.AspNetCore.Identity.EntityFrameworkCore使用了5.0.5(属于.NET 5),版本不兼容。需将其降级到3.1.x系列版本(如3.1.31),与项目框架版本保持一致。

修改后的PackageReference如下:

<PackageReference Include="IdentityServer4" Version="4.1.2" />
<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="3.0.1" />
<PackageReference Include="IdentityServer4.AspNetIdentity" Version="4.1.2" />
<PackageReference Include="IdentityServer4.EntityFramework" Version="4.1.2" />
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.31" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="3.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.0" />

2. 正确设置PublicOrigin

在IdentityServer4 4.x版本中,PublicOrigin是IdentityServerOptions的有效属性,版本冲突会导致编译器无法识别该属性。修复包版本后,可正常配置:

services.AddIdentityServer(options =>
{
    // 替换为你的公共Origin地址
    options.PublicOrigin = "https://your-public-domain.com";
})
// 后续添加其他必要配置(如身份存储、签名凭证等)
.AddAspNetIdentity<ApplicationUser>()
.AddConfigurationStore(options =>
{
    options.ConfigureDbContext = b => b.UseSqlServer(connectionString);
})
.AddOperationalStore(options =>
{
    options.ConfigureDbContext = b => b.UseSqlServer(connectionString);
});

若处于反向代理场景,也可通过AspNetCore的ForwardedHeaders中间件处理公共原点:

// 在ConfigureServices中配置
services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
    // 添加允许的代理IP地址,根据实际环境调整
    options.KnownProxies.Add(IPAddress.Parse("192.168.1.100"));
});

// 在Configure中,将该中间件放在UseIdentityServer之前
app.UseForwardedHeaders();
app.UseIdentityServer();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:50:22