在嘗試使用谷歌在外部身份驗證,應用程序給了我以下異常:序列包含多個元素Microsoft.Owin.Security.AuthenticationManager
<錯誤> <消息>發生了錯誤。 <ExceptionMessage>序列包含一個以上的元件</ExceptionMessage > <ExceptionType> System.InvalidOperationException </ExceptionType > <堆棧跟蹤> 在System.Linq.Enumerable.SingleOrDefault [TSource](IEnumerable的
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
1.GetResult()在System.Web.Http.HostAuthenticationFilter.d__0.MoveNext()---從以前位置拋出異常的堆棧跟蹤結束---在System.Runtime.CompilerServices的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務任務) System.Runtime.CompilerService上的.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務任務) s.TaskAwaiter.GetResult()在System.Web.Http.Controllers.AuthenticationFilterResult.d__0.MoveNext()---從以前的位置拋出異常的堆棧跟蹤結束---在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()
我已經配置我的網絡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);
}
我發現解決方案[這裏](http://stackoverflow.com/questions/24978940/webapi-oauth-useoauthbearerauthentication-gives-sequence-contains-more-than-one)它會幫助你 – 2016-02-17 04:39:21