【发布时间】:2019-05-30 19:06:27
【问题描述】:
我正在将 IdentityServer 从 2.2 更新到 2.4。我有两个项目,一个是入口点,另一个是服务。 我将这两个项目都更新到了 2.4 并面临以下问题:
类型“IProfileService”是在一个未定义的程序集中定义的 参考。
另外,我还有一个错误:
类型“ClaimsProfileService”不能用作类型参数“T” 在泛型类型或方法中 'IdentityServerBuilderExtensionsAdditional.AddProfileService(IIdentityServerBuilder)'。 'ClaimsProfileService' 没有隐式引用转换 到“IdentityServer4.Services.IProfileService”。
类 ClaimsProfileService 实现了接口 IProfileService。它看起来很奇怪,因为当我将 IdentityServer 降级到 2.2 时它可以正常工作。
实际上,存在奇怪的行为,当我在 Startup.cs 中创建一个嵌套类而不是实现 IProfileService 时,我没有收到任何错误。
这是我的身份服务器确认。
var identityServer = services.AddIdentityServer(options =>
{
options.Events.RaiseErrorEvents = true;
options.Events.RaiseInformationEvents = true;
options.Events.RaiseFailureEvents = true;
options.Events.RaiseSuccessEvents = true;
options.Authentication.CookieLifetime = TimeSpan.FromSeconds(7200);
})
// this adds the config data from DB (clients, resources, CORS)
.AddConfigurationStore(options =>
{
options.ConfigureDbContext = builder =>
builder.UseSqlServer(connectionString,
sql => sql.MigrationsAssembly(migrationsAssembly));
})
// this adds the operational data from DB (codes, tokens, consents)
.AddOperationalStore(options =>
{
options.ConfigureDbContext = builder =>
builder.UseSqlServer(connectionString,
sql => sql.MigrationsAssembly(migrationsAssembly));
// this enables automatic token cleanup. this is optional.
options.EnableTokenCleanup = true;
// options.TokenCleanupInterval = 15; // interval in seconds. 15 seconds useful for debugging
})
.AddAspNetIdentity<ApplicationUser>()
.AddProfileService<ClaimsProfileService>()
.AddExtensionGrantValidator<DelegationGrantValidator>();
这是主应用项目的 PackageReferences。
<ItemGroup>
<PackageReference Include="IdentityServer4" Version="2.4.0" />
<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="2.7.0" />
<PackageReference Include="IdentityServer4.AspNetIdentity" Version="2.4.0" />
<PackageReference Include="IdentityServer4.EntityFramework" Version="2.4.0" />
<PackageReference Include="jQuery" Version="3.3.1" />
<PackageReference Include="jQuery.Validation" Version="1.17.0" />
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.2" />
<PackageReference Include="Microsoft.jQuery.Unobtrusive.Validation" Version="3.2.11" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.2" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />
</ItemGroup>
这是服务项目的 PackageReferences。
<ItemGroup>
<PackageReference Include="IdentityServer4" Version="2.4.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.2" />
</ItemGroup>
感谢您对此问题的任何帮助。
【问题讨论】:
标签: identityserver4