1

いくつかの追加機能を追加するサードパーティ 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


}
4

1 に答える 1