当您单击登录按钮时,我们在 Silverlight 4(带有 RIA 服务的 OOB)中收到此错误 InvalidOperationException“userservice operation already in progress”,但它并非每次都发生,有时会发生多次。如果我忽略错误并继续运行,它似乎可以工作。有谁知道是什么原因造成的?
编辑:该项目是使用“Silverlight Business Application”模板创建的。
堆栈跟踪
在 System.ServiceModel.DomainServices.Client.ApplicationServices.AuthenticationService.StartOperation(AuthenticationOperation operation)
在 System.ServiceModel.DomainServices.Client.ApplicationServices.AuthenticationService.Login(LoginParameters parameters, Action`1 completeAction, Object userState)
在 Reach.SL.LoginUI .LoginForm.LoginButton_Click(Object sender, EventArgs e)
在 System.Windows.Controls.Primitives.ButtonBase.OnClick() 在 System.Windows.Controls.Button.OnClick() 在 System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp( MouseButtonEventArgs e)
在 System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
在 MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj,IntPtr unmanagedObjArgs,Int32 argsTypeIndex,Int32 actualArgsTypeIndex,字符串 eventName)
编辑(更多信息)。我已经能够通过新的“Silverlight 业务应用程序”解决方案和一些小的更改一致地重现该问题。这个问题更多地发生在服务响应较慢的站点上,因此所有更改都是为了加快用户在我的开发盒上的输入。如果您从“Silverlight 业务应用程序”开始并将其更改为做两件事;1.加载后立即显示登录框。2.默认一些有效的凭据(所以你不必输入它们)。
然后运行该应用程序并在显示屏幕后立即按“输入”(登录),然后我会始终收到错误消息。
我使用了 Fiddler,它表明实际上发生了两个调用......
/ClientBin/SilverlightBusinessApp-Web-AuthenticationService.svc/binary/GetUser
/ClientBin/SilverlightBusinessApp-Web-AuthenticationService.svc/binary/Login
当调用登录时第一次调用 GetUser 仍在进行中时,会发生错误。对 GetUser 的调用来自哪里?(是否从 aspnetDB 获取凭据)
我可以添加什么代码,以便在 GetUser 调用完成之前它不会调用 Login?(我已经尝试过“WebContext.Current.Authentication.IsBusy”但是当对 getUser 的调用完成时它似乎没有重置。