2014-07-27 9 views
5

ich meine WebAPI OAuth 2.0 durch diese Linien konfiguriert:WebAPI OAuth UseOAuthBearerAuthentication gibt "Sequenz enthält mehr als ein Element" Fehler

app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions 
    { 
     Provider = new OAuthBearerAuthenticationProvider(), 
    }); 

    app.UseOAuthBearerTokens(OAuthOptions); 

Aber es gibt mir die folgende Fehlermeldung bei jeder Anfrage:

Message : An error has occurred. 
ExceptionMessage : Sequence contains more than one element 
ExceptionType : System.InvalidOperationException 
StackTrace : at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source) 
    at Microsoft.Owin.Security.AuthenticationManager.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`1.GetResult() 
    at System.Web.Http.HostAuthenticationFilter.d__0.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.Web.Http.Controllers.AuthenticationFilterResult.d__0.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`1.GetResult() 
    at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext() 

Mein OAuthOptions ist:

OAuthOptions = new OAuthAuthorizationServerOptions 
    { 
     TokenEndpointPath = new PathString("/Token"), 
     Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory), 
     AuthorizeEndpointPath = new PathString("/Account/ExternalLogin"), 
     AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), 
     AllowInsecureHttp = true, 
    }; 
} 

Wenn ich Kommentar UseOAuthBearerAuthentication alles ist in Ordnung! Ich habe OAuthBearerAuthenticationProvider noch nicht angepasst und verwende es direkt, aber warum gibt es einen Fehler?

Antwort

29

Es sollte ein Fehler sein! Verwenden

app.UseOAuthAuthorizationServer(OAuthOptions);

statt

app.UseOAuthBearerTokens(OAuthOptions);

+1

Sie sind ein Lichtschwert –

+0

Hallo, ich das gleiche Problem habe. Das funktionierte für mich, aber jetzt funktioniert es nicht mehr. Ich habe einige Threads gefunden, die eine mögliche Ursache für die Owin-Versionsaufhebung von 3.0.0 auf 3.0.1 vermuten lassen. Aber selbst wenn ich 3.0.0 registriere, funktioniert es nicht für mich. Versucht die obige Lösung immer noch nicht funktioniert. Könnte jemand hier führen? –

+0

Stellen Sie Ihre Frage in einem neuen Thread. Niemand kann deine Frage hier sehen! –