2017-09-25 170 views
0

我必須錯過一些東西,但我看不到它。
我創建了一個新的「空」 ASP.NET 2.0的核心項目
我加入EF核2.0和EF核2.0身份
然後我嘗試添加IdentityServer4 2.0 RC1和我得到一個包以下錯誤消息恢復失敗:發生在還原的NuGet包IdentityServer4和ASP.NET Core 2.0

錯誤:序列中含有較多的 超過一個匹配元素

有一個在這個項目中沒有代碼,所以我完全糊塗了。

這裏是的csproj文件:

<Project Sdk="Microsoft.NET.Sdk.Web"> 

    <PropertyGroup> 
    <TargetFramework>netcoreapp2.0</TargetFramework> 
    </PropertyGroup> 

    <ItemGroup> 
    <Folder Include="wwwroot\" /> 
    </ItemGroup> 

    <ItemGroup> 
    <PackageReference Include="IdentityServer4" Version="2.0.0-rc1-update1" /> 
    <PackageReference Include="IdentityServer4.AspNetIdentity" Version="2.0.0-rc1" /> 
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.0" /> 
    <PackageReference Include="NETStandard.Library" Version="2.0.0" /> 
    </ItemGroup> 
    <ItemGroup> 
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> 
    <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" /> 
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" /> 
    </ItemGroup> 
</Project> 

下面是從包管理器控制檯我到NuGet.org電話:

PM>安裝,包裝IdentityServer4.AspNetIdentity -Version 2.0.0 -rc1 -PRERELEASE GET https://api.nuget.org/v3/registration3-gz-semver2/identityserver4.aspnetidentity/index.json OK https://api.nuget.org/v3/registration3-gz-semver2/identityserver4.aspnetidentity/index.json 484ms恢復包 d:\原型\ IdentityServer4 \ IdentityServer4 \ IdentityServ er4.csproj ... 安裝包:序列包含多個匹配元素在 行:1個字符:1 +安裝包IdentityServer4.AspNetIdentity - 版本2.0.0-rc1 -Pr ... + ~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:) [安裝封裝],異常 + FullyQualifiedErrorId:NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand 經過時間: 00:00:03.7728514 PM>

+0

嘗試重命名您的項目...也許到MyIdentityServer4。這可能是由於您的項目與您正在安裝的一個包(IdentityServer4)具有相同的名稱。 – Peter

+0

對,現在我覺得自己是一個完整的ID10T!謝謝@彼得 –

回答

0

以下是您將項目遷移到asp.net core 2.0的一些更改。 步驟1: 從以下鏈接下載適用於visual studio 2017的asp.net核心2.0 gx64x。 https://www.microsoft.com/net/download/core 第2步:從包裝的NuGet或包管理器控制檯 1 - 安裝 - 包IdentityServer4 -Version 2.0.0 2,安裝,包裝IdentityServer4.AspNetIdentity -Version 2.0.0-RC1-UPDATE2

步驟 下載3: 在Csproj文件中更新一些代碼。 之前: netcoreapp1.1 後: netcoreapp2.0

Before: 
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="1.1.1" /> 
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="1.1.1" /> 
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="1.1.1" /> 
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="1.1.1" /> 
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" /> 
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.1" /> 
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="1.1.1" /> 
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" /> 
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.1" /> 
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.1" /> 
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0" /> 
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.1" /> 
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.1.1" /> 
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="1.1.1" /> 
<PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.1" /> 
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="1.1.1" /> 
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" /> 
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="1.1.1" /> 
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.0" /> 
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.1.0" /> 
After: 
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" /> 

Before: 
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" /> 
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.0" /> 
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" /> 
  
After: 
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> 
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" /> 
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" /> 

步驟4:在Program.cs中類 更新之前: 公共靜態無效的主要(字符串[]參數) { 變種宿主= new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup() .Build(); 東道主。跑(); } After: public static void Main(string [] args) { BuildWebHost(args).Run(); } 公共靜態IWebHost BuildWebHost(串[]參數)=> WebHost.CreateDefaultBuilder(參數) .UseStartup() .Build(); 步驟5: 更新在StartUp.cs

services.AddIdentityServer() 
        .AddDeveloperSigningCredential() 
        .AddInMemoryPersistedGrants() 
        .AddInMemoryIdentityResources(Config.GetIdentityResources()) 
        .AddInMemoryApiResources(Config.GetApiResources()) 
        .AddInMemoryClients(Config.GetClients()) 
        .AddAspNetIdentity<ApplicationUser>(); 

     Before: 
     app.UseIdentity(); 
     After: 
     app.UseAuthentication(); 

步驟6:變化管理登錄視圖模型

Before: 
public IList<AuthenticationDescription> OtherLogins { get; set; } 
  
After: 
public IList<AuthenticationScheme> OtherLogins { get; set; } 

步驟7: 變化管理器控制器

Before: 
var otherLogins = _signInManager 
                  .GetExternalAuthenticationSchemes() 
                  .Where(auth => userLogins 
                                 .All(ul => auth.AuthenticationScheme != ul.LoginProvider)) 
                  .ToList(); 
  
After: 
var otherLogins = (await _signInManager 
                   .GetExternalAuthenticationSchemesAsync()) 
                  .Where(auth => userLogins 
                                 .All(ul => auth.Name != ul.LoginProvider)) 
                  .ToList(); 

步驟8: 更改罪名Login.cshtml文件 之前: var loginP roviders = SignInManager.GetExternalAuthenticationSchemes()。ToList(); 之後: var loginProviders =(等待SignInManager.GetExternalAuthenticationSchemesAsync())。ToList();

Before: 
<button type="submit" class="btn btn-default" 
        name="provider" value="@provider.AuthenticationScheme" 
        title="Log in using your @provider.DisplayName account"> 
    @provider.AuthenticationScheme 
</button> 
  
After: 
<button type="submit" class="btn btn-default" 
        name="provider" value="@provider.Name" 
        title="Log in using your @provider.DisplayName account"> 
    @provider.Name 
</button> 
相關問題