Asp.net-Identity

AddIdentity() 失敗“InvalidOperationException:方案已存在:Identity.Application”

  • July 3, 2018

我正在嘗試將 facebook 登錄添加到我的 .NET Core 2.1 站點

我正在關注這個,指南和更具體的,這個(用於 facebook 登錄)

在將以下行添加到 startup.cs 之後,在 ConfigureServices-method 中

public void ConfigureServices(IServiceCollection services)
{
   ...
   services.AddIdentity<ApplicationUser, IdentityRole>()
           .AddEntityFrameworkStores<ApplicationDbContext>()
           .AddDefaultTokenProviders();
   ...
}

我在執行應用程序時收到錯誤消息。沒有這些行,它可以“正常”工作。使用者可以登錄 facebook 並批准我的申請,然後我會收到電子郵件等等。但我猜使用者資訊不會添加到我的數據庫中

InvalidOperationException:Scheme 已經存在:Identity.Application Microsoft.AspNetCore.Authentication.AuthenticationOptions.AddScheme(string name, Action configureBuilder)…

程式碼越過了添加的行,並且在片刻後(在啟動期間)出現錯誤。我在我的項目中進行了搜尋(這只是一個裸露的 .NET Core 2.1 Web 應用程序,來自模板),但我看不到“AddIdentity”的任何其他用法。

我確實找到了一個“AddDEfaultIdentity()”,註釋掉了那一行。但後來我得到了

InvalidOperationException:沒有 註冊類型“Microsoft.AspNetCore.Identity.UserManager`1[Microsoft.AspNetCore.Identity.IdentityUser]”的服務。Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider 提供程序,類型 serviceType)

我有一個類似的問題。這可能對使用 .Net Core 3.0 的人更有幫助。在四處探勘之後,我發現一旦你使用腳手架創建了一個“身份”區域。在 Identity 文件夾中創建了一個名為“IdentityHostingStartup.cs”的文件。

IdentityHosting啟動位置

在該類中,創建了另一個“AddDefaultIdentity”實例以及其他一些服務。

IdentityHostingStartup 文件視圖

如果您從“Startup.cs”中刪除“addDefaultIdentity”,您的應用程序應該會啟動。此外,如果您收到空連接字元串錯誤。更新 IdentityHostintgStartup.cs 中的連接字元串

注意:刪除任何一個 addDefaultIdentities 都可以。你只是不能在兩個地方都有它。

希望這可以幫助。

引用自:https://stackoverflow.com/questions/51161729