我有一个使用异步回调在 WCF 中编写的服务器应用程序,以及一个在 ASP.NET 中的 webforms 应用程序。两个应用程序之间的所有通信都很好,我可以通过 Web 应用程序调用服务器中公开的函数,服务器可以向 Web 应用程序发送回调,但是有时回调中的函数工作,而其他时候,它们不。
例如,我希望 Web 应用程序上的登录按钮向服务器发送用户名和密码,服务器会根据数据库对此进行检查,如果登录信息正确,它应该发送回调,打开一个新页面在网络应用程序中。
这是相关的服务器代码:
public void Login(String username, String password)
{
//DoCheckAgainstDatabase(username, password);
ICallback callback = OperationContext.Current.GetCallbackChannel<ICallback>();
callback.LoginSuccess();
}
和网络应用程序代码:
private InstanceContext _instanceContext;
private ServiceClient _service;
public CallbackHandler MyCallbackHandler = new CallbackHandler();
protected void Page_Load(object sender, EventArgs e)
{
_instanceContext = new InstanceContext(MyCallbackHandler);
_backEnd = new ServiceClient(_instanceContext, "NetTcpBinding_IAU", "net.tcp://localhost/MyService/Service");
_backEnd.Open();
MyCallbackHandler.LoginSucceeded += OnLoginSucceeded;
}
protected void LoginButton_Click(object sender, EventArgs e)
{
_backEnd.Login(UsernameTextBox.Text, PasswordTextBox.Text);
}
private void OnLoginSucceeded(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "OpenClientWindow", "window.open('Client.aspx','_self');", true);
}
我可以设置断点,并查看一切正常,只是代码“ScriptManager.RegisterStartupScript...”始终无法正常执行。
这可能与线程有关吗?有人可以提出解决此问题的方法吗?
提前致谢!大卫