データベースから値を取得するために、WCF Webサービスのメソッドを呼び出すことができるSilverlightクライアントがあります。長いクエリの場合、私はそれをキャンセルするオプションをユーザーに与えたい。クライアントのアボートでWCF操作をキャンセルします。
クライアント側で、「キャンセル」を押すと、私はWCFインスタンスで「.Abort()」を呼び出します。しかし、私のWCFサービスは、クライアントがもはや接続されていないことを知らないため、操作を継続します。
私の質問です:WCFサービスがクライアントが接続を強制終了したことを知ることはできますか?
私は私の契約方法でChannel.Closed /フォルトイベントにsuscribing試してみましたが、彼らが起動しません...
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
internal class MyContract: IMyContract
{
public object QueryDatabase(...)
{
System.ServiceModel.OperationContext.Current.Channel.Faulted += new System.EventHandler(Channel_Faulted);
System.ServiceModel.OperationContext.Current.Channel.Closed += new System.EventHandler(Channel_Faulted);
// Perform sql query
}
void Channel_Faulted(object sender, System.EventArgs e)
{
// Cancel SQL query here
}
}
誰もがこれを行う方法を知っていますか? ありがとう!
どのバインディングを使用していますか? – Franchesca
私は現在BasicHttpBindingを使用しています。投稿した記事を見て、信頼できるセッションをサポートしていません。 BasicHttpBindingはもともとより良い相互運用性のために使用されていたので、別のタイプのバインディング(WSHttpBindingなど)を使用することが問題ないかどうか、さらに調査する必要があります... – Mathieu