Ошибка при использовании пользовательского класса при реализации IProfileService. Тип 'IProfileService' определен в сборке, на которую нет ссылок - PullRequest
0 голосов

Я обновляю 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>

Спасибо за любую помощь в этом вопросе.

1 Ответ

0 голосов

Уже исправлено.Просто удалил из папки NuGet версии 2.2 вручную.Затем я переустановил IdentityServer и все работает правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...