いくつかの追加機能を追加するサードパーティ Web サービスのラッパーである WCF サービスを作成しました。私が抱えている問題は、メソッド内でサードパーティの Web サービスのメソッドを呼び出したいのですが、これらのメソッドに対する応答 (Web サービスは非常に遅い) を待ちたくないということです。メソッドで [OperationContract(IsOneWay = true)] を使用しようとしましたが、次のエラーが発生します。
System.InvalidOperationException: タイプ 'MyService.MyService' のメソッド 'MyMethod' で宣言された OperationContractAttribute が無効です。OperationContractAttributes は、ServiceContractAttribute を持つ型で宣言されたメソッドでのみ有効です。タイプ 'MyService.MyService' に ServiceContractAttribute を追加するか、メソッド 'MyMethod' から OperationContractAttribute を削除してください。
サード パーティの Web サービスを呼び出さないメソッドで [OperationContract(IsOneWay = true)] を使用すると、正常に動作します。これを行う方法はありますか?
これは私が取っているアプローチです:
public string MyPublicMethod()
{
//do some stuff
SomeParams sp = new SomeParams{p1 = "A", P2 = "B"};
//don't want to wait for this
MyMethod(sp);
// do some more stuff
}
[OperationContract(IsOneWay = true)]
private void MyMethod(SomeParams someParams)
{
//3rd party service
WebInterop wisc = new WebInterop();
var results = (XmlElement)wisc.Search(someParams);
// do some processing on results
}