对“AuthenticationTicket”类型的引用声称它在“Microsoft.AspNetCore.Authentication”中定义,但找不到它

时间:2018-01-12 04:01:07

标签: c# .net asp.net-identity identity asp.net-core-2.0

我有一个ASP.NET Core 2应用程序,现在我在迁移Core 1x中的代码时遇到了一些问题。这里我们有一小段代码。我有这个错误,有人可以告诉我这件事有什么变化吗? PS:所有四个错误都是一样的:

  

对'AuthenticationTicket'类型的引用声称它是在中定义的   “Microsoft.AspNetCore.Authentication”,但无法找到。

[errors in the code][1]

enter image description here

 private async Task<AuthenticationTicket> CreateTicketAsync(OpenIdConnectRequest request, ApplicationUser user, AuthenticationProperties properties = null)
    {
        // Create a new ClaimsPrincipal containing the claims that
        // will be used to create an id_token, a token or a code.
        var principal = await _signInManager.CreateUserPrincipalAsync(user);

        // Create a new authentication ticket holding the user identity.
        var ticket = new AuthenticationTicket(principal, new AuthenticationProperties(), OpenIdConnectServerDefaults.AuthenticationScheme);
        ticket.SetResources(request.GetResources());**// ERROR IN THIS LINE**

        //if (!request.IsRefreshTokenGrantType())
        //{
        // Set the list of scopes granted to the client application.
        // Note: the offline_access scope must be granted
        // to allow OpenIddict to return a refresh token.
        ticket.SetScopes(new[] **// ERROR IN THIS LINE**
        {
                OpenIdConnectConstants.Scopes.OpenId,
                OpenIdConnectConstants.Scopes.Email,
                OpenIdConnectConstants.Scopes.Profile,
                OpenIdConnectConstants.Scopes.OfflineAccess,
                OpenIddictConstants.Scopes.Roles
            }.Intersect(request.GetScopes())); **// ERROR IN THIS LINE**
        //}
}

更新: Nuget references

1 个答案:

答案 0 :(得分:1)

您的引用列表表明您正在混合为ASP.NET Core 1.x设计的包和需要2.x的包。由于在2个ASP.NET核心软件包之间引入了大量更改,因此为1.x构建的与身份验证相关的软件包不太可能与2.0一起使用。

尝试更新软件包以使用与ASP.NET Core 2.0兼容的版本。 AspNet.Security.OAuth.ValidationAspNet.Security.OpenIdConnect.PrimitivesAspNet.Security.OpenIdConnect.Server都已更新,以支持新的身份验证API(注意:您不需要引用最后两个包,因为它们是由OpenIddict间接引用的)。