Sequence包含多个元素Microsoft.Owin.Security.AuthenticationManager

Moj*_*que 5 c# google-authentication oauth-2.0 owin asp.net-web-api2

在尝试使用Google进行外部身份验证时,应用程序会给我以下异常:

<错误> <消息>发生错误.<ExceptionMessage> Sequence在System.Linq.Enumerable.SingleOrDefault [TSource]中包含多个元素</ ExceptionMessage> <ExceptionType> System.InvalidOperationException </ ExceptionType> <StackTrace> 1 source) at Microsoft.Owin.Security.AuthenticationManager.<AuthenticateAsync>d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter(System.Web.Http中的IEnumerable 1.GetResult() .HostAuthenticationFilter.d__0.MoveNext()---在抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)处( System.Web.Http.Controllers.AuthenticationFilterResult.d__0.MoveNext()中的System.Runtime.CompilerServices.TaskAwaiter.GetResult()处的任务任务)从抛出异常的先前位置开始的堆栈跟踪结束---在系统中System.W上System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中的.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)eb.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()

我已将Web Api oAuth配置如下:

public void ConfigureOAuth(IAppBuilder app)
{
    app.UseExternalSignInCookie(
        Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ExternalCookie);

    OAuthBearerOptions = new OAuthBearerAuthenticationOptions();

    OAuthAuthorizationServerOptions OAuthServerOptions = 
        new OAuthAuthorizationServerOptions()
    {
        AllowInsecureHttp = true,
        TokenEndpointPath = new PathString("/token"),
        AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30),
        Provider = new SimpleAuthorizationServerProvider(),
    };

    app.UseOAuthAuthorizationServer(OAuthServerOptions);

    app.UseOAuthBearerAuthentication(OAuthBearerOptions);

    googleAuthOptions = new GoogleOAuth2AuthenticationOptions()
    {
        ClientId = ClientId,
        ClientSecret = ClientSecret,
        Provider = new GoogleAuthProvider()
    };

    app.UseGoogleAuthentication(googleAuthOptions);
}
Run Code Online (Sandbox Code Playgroud)

小智 6

检查,请,可能是你使用 app.UseOAuthBearerTokens(OAuthOptions);app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());在一起


Phi*_*hil 1

请参阅WebApi OAuth UseOAuthBearerAuthentication 给出“序列包含多个元素”错误。我自己通过注释修复了它

app.UseOAuthAuthorizationServer(OAuthOptions);
Run Code Online (Sandbox Code Playgroud)

相反,但我想它们不兼容同时拥有两者?