IdentityServer4和ASP.NET Core 2.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>
以下是您将项目迁移到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>
尝试重命名您的项目...也许到MyIdentityServer4。这可能是由于您的项目与您正在安装的一个包(IdentityServer4)具有相同的名称。 – Peter
对,现在我觉得自己是一个完整的ID10T!谢谢@彼得 –