2013-08-25 31 views
0

我有一個MVC4應用程序,本地調試進程沒有啓用註冊外部網站客戶端(如Twitter等等)。我使用自定義成員資格用戶和角色提供者。但不幸的是,當我瀏覽了「管理」頁面出現此錯誤:MVC4 OAuth HasLocalAccount方法拋出InvalidOperationException

Operation is not valid due to the current state of the object.

而且堆棧跟蹤:

[InvalidOperationException: Operation is not valid due to the current state of the object.] Microsoft.Web.WebPages.OAuth.OAuthWebSecurity.VerifyProvider() +91 Microsoft.Web.WebPages.OAuth.OAuthWebSecurity.HasLocalAccount(Int32 userId) +41 Melk.Controllers.AccountController.Manage(Nullable 1 message) in C:\Users\AmirMehr\documents\visual studio 2010\Projects\Melk\Melk\Controllers\AccountController.cs:141 lambda_method(Closure , ControllerBase , Object[]) +153 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary 2 parameters) +211 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 parameters) +27 System.Web.Mvc.Async.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() +28 System.Web.Mvc.Async.<>c__DisplayClass8 1.b__7(IAsyncResult ) +10 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +57 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +48 System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +57 System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +223 System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +57 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +48 System.Web.Mvc.Async.<>c_DisplayClass2a.b_20() +24 System.Web.Mvc.Async.<>c_DisplayClass25.b_22(IAsyncResult asyncResult) +102 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +57 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +43 System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +14 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +62 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +57 System.Web.Mvc.Async.<>c_DisplayClass4.b__3(IAsyncResult ar) +23 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +62 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +47 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +25 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +62 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +47 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9629708 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

請幫忙注意。謝謝。

回答

1

VerifyProvider如果您使用的是SimpleMembershipProvider並且尚未初始化,或者提供程序沒有從ExtendedMembershipProvider繼承,則會拋出。

如果您使用的是開箱即​​用的WebSecurity,您需要確保首先調用WebSecurity.InitializeDatabaseConnection

如果您使用自定義提供程序,請確保它們從ExtendedMembershipProvider(或SimpleMembershipProvider)繼承,否則您將無法使用此功能。

+0

我的角色提供者繼承自RoleProvider和MembershipProvider的成員資格。這是錯的嗎?數據庫也被初始化。 –

+0

是的,如果你想使用WebSecurity,你需要繼承'ExtendedMembershipProvider'。 –

+0

您是否可以在這篇文章中描述並照亮我? :http://stackoverflow.com/questions/18562758/differences-among-types-of-memberships-in-mvc?noredirect=1#comment27312569_18562758 –

相關問題