Я обновляю 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 for Services.
<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>
Спасибо за любую помощь в этом вопросе.