非同期コールバックを使用して WCF で記述されたサーバー アプリケーションと、ASP.NET の Web フォーム アプリケーションがあります。2 つのアプリケーション間の通信はすべて問題なく、Web アプリケーションを介してサーバーで公開された関数を呼び出すことができ、サーバーは Web アプリケーションにコールバックを送信できますが、コールバック内の関数が機能する場合もあれば、しないでください。
たとえば、ユーザー名とパスワードをサーバーに送信する Web アプリのログイン ボタンが必要です。サーバーはこれをデータベースと照合し、ログイン情報が正しい場合は、新しいページを開くコールバックを送信する必要があります。ウェブアプリで。
関連するサーバーコードは次のとおりです。
public void Login(String username, String password)
{
//DoCheckAgainstDatabase(username, password);
ICallback callback = OperationContext.Current.GetCallbackChannel<ICallback>();
callback.LoginSuccess();
}
および Web アプリケーション コード:
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...' が常に適切に実行されていないだけです。
これはスレッド化と関係があるのでしょうか? 誰でもこれを修正する方法を提案できますか?
前もって感謝します!デビッド