我如何解决""Reference to type 'BaseControlContext"索赔....."for AspNet.Security.OpenIdConnect.Server



我遇到了奇怪的问题。 我正在阅读和创建这篇文章OpenID Connect server with ASOSASOS - AspNet.Security.OpenIdConnect.Server。

我只是创建了一个新的示例解决方案,并在 OpenIdConnectServerProvider 的类AuthorizationProvider添加了新的子类,并覆盖了虚拟方法i.e. ExtractAuthorizationRequest

授权提供程序.cs

public class AuthorizationProvider : OpenIdConnectServerProvider
{
public override Task ExtractAuthorizationRequest(ExtractAuthorizationRequestContext context)
{
// If a request_id parameter can be found in the authorization request,
// restore the complete authorization request stored in the user session.
if (!string.IsNullOrEmpty(context.Request.RequestId))
{
var payload = context.HttpContext.Session.Get(context.Request.RequestId);
if (payload == null)
{
context.Reject(
error: OpenIdConnectConstants.Errors.InvalidRequest,
description: "Invalid request: timeout expired.");
return Task.FromResult(0);
}
// Restore the authorization request parameters from the serialized payload.
using (var reader = new BsonReader(new MemoryStream(payload)))
{
foreach (var parameter in JObject.Load(reader))
{
// Avoid overriding the current request parameters.
if (context.Request.HasParameter(parameter.Key))
{
continue;
}
context.Request.SetParameter(parameter.Key, parameter.Value);
}
}
}
return Task.FromResult(0);
}
}

问题: 一旦我Microsoft.AspNetCore.Identity (2.0.0)NuGet 包添加到我的项目中,context.Reject开始出现以下错误

"对类型'BaseControlContext'的引用"声明中定义 Microsoft.AspNetCore.Authentication,但找不到。

但是一旦我删除Microsoft.AspNetCore.IdentityNuGet 依赖项,错误就会消失,一切看起来都很好。

注意:

  1. 我正在使用VS 2017。
  2. 我正在使用dotnetcore 2.0 SDK。
  3. 我使用 .Net Core 2.0 创建了解决方案。

Core 2.0 ASP.NET 身份验证堆栈中引入了大量更改。这些更改非常重要,以至于为Core 1.x编写的所有身份验证中间件 ASP.NET 都不兼容(包括所有aspnet-contrib项目(。

您可以阅读 https://github.com/aspnet/Announcements/issues/262 了解更多信息。

好消息是,我们有一个 ASP.NET Core 2.0 RTM兼容版本的ASOS。您可以在 aspnet-contrib MyGet 提要 (https://www.myget.org/F/aspnet-contrib/api/v3/index.json( 上找到2.0.0-preview1-*位。

相关内容

  • 没有找到相关文章

最新更新