4

当您单击登录按钮时,我们在 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 的调用完成时它似乎没有重置。

4

1 回答 1

4

在 Silverlight 业务应用程序模板中,可以App.xaml.csApplication_Startup方法中找到以下代码行。

WebContext.Current.Authentication.LoadUser(this.Application_UserLoaded, null);

此行将导致GetUser对您的AuthenticationService(模板也附带)的调用。所以本质上这个GetUser服务调用是在应用程序启动时发生的,这就是导致用户在启动应用程序后快速登录的问题。

如果您不希望用户在检查“让我保持登录”字段时自动登录,那么您可以安全地从Application_Startup. 另一种选择是创建某种LoginHelper类并在登录完成时在该类中触发一个事件。在您的登录控件上侦听此事件,并仅在初始GetUser调用完成时启用登录按钮。

还有其他几种潜在的解决方法,但在不了解项目架构的情况下很难推荐一种。希望这可以帮助。

于 2011-03-22T01:44:40.690 回答