Люди, которым мне нужна помощь Я нахожусь в новом проекте, в котором я внедряю идентификационный сервер 4, и я пытаюсь восстановить ранее созданных пользователей с asp. Идентификационные данные, которые у меня есть в моей базе данных, чтобы иметь возможность проверить, когда я делаю внешний логин с сервера идентификации 4. Извините, мой английский.
Мой Startup.cs
public class Startup
{
public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
#region --Identity ASP
services.AddDbContext<QGoodDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")),ServiceLifetime.Transient);
services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddEntityFrameworkStores<QGoodDbContext>()
.AddDefaultTokenProviders();
#endregion
services.AddMvc();
services.AddScoped<UserManager<ApplicationUser>>();
services.AddScoped<SignInManager<ApplicationUser>>();
// configure identity server with in-memory stores, keys, clients and scopes
services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddInMemoryPersistedGrants()
.AddInMemoryIdentityResources(Config.GetIdentityResources())
.AddInMemoryApiResources(Config.GetApiResources())
.AddInMemoryClients(Config.GetClients());
//.AddAspNetIdentity<ApplicationUser>();
}
}
Когда я инициализирую свою базу данных, у меня уже появляется эта ошибка
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseIdentityServer();
app.UseStaticFiles();
app.UseMvcWithDefaultRoute();
InitializeDatabase(app);
}
private void InitializeDatabase(IApplicationBuilder app)
{
using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
//serviceScope.ServiceProvider.GetRequiredService<QGoodDbContext>().Database.Migrate();
var context = serviceScope.ServiceProvider.GetRequiredService<QGoodDbContext>();
}
}
В моем AccountController
у меня есть исключение при звонке await _userManager.FindByLoginAsync(provider, providerUserId);
public class AccountController : Controller
{
private readonly UserManager<ApplicationUser> _userManager;
private readonly SignInManager<ApplicationUser> _signInManager;
private readonly QGoodDbContext _context;
private readonly TestUserStore _users;
private readonly IIdentityServerInteractionService _interaction;
private readonly IClientStore _clientStore;
private readonly IAuthenticationSchemeProvider _schemeProvider;
private readonly IEventService _events;
public AccountController(
UserManager<ApplicationUser> userManager,
SignInManager<ApplicationUser> signInManager,
QGoodDbContext context,
IIdentityServerInteractionService interaction,
IClientStore clientStore,
IAuthenticationSchemeProvider schemeProvider,
IEventService events,
TestUserStore users = null)
{
// if the TestUserStore is not in DI, then we'll just use the global users collection
// this is where you would plug in your own custom identity management library (e.g. ASP.NET Identity)
_users = users ?? new TestUserStore(TestUsers.Users);
_userManager = userManager;
_signInManager = signInManager;
_context = context;
_interaction = interaction;
_clientStore = clientStore;
_schemeProvider = schemeProvider;
_events = events;
}
public async Task<IActionResult> ExternalLoginCallback()
{
try
{
// read external identity from the temporary cookie
var result = await HttpContext.AuthenticateAsync(IdentityServer4.IdentityServerConstants.ExternalCookieAuthenticationScheme);
if (result?.Succeeded != true)
{
throw new Exception("External authentication error");
}
// lookup our user and external provider info
var (userTest, provider, providerUserId, claims) = FindUserFromExternalProvider(result);
var user = await _userManager.FindByLoginAsync(provider, providerUserId);
}
}
}
Исключение составляет:
Метод не найден: 'System.Reflection.MethodInfo Microsoft.EntityFrameworkCore.Query.EntityQueryModelVisitor.get_SelectAsyncMethod ()'