第三方Web服务的WCF包装器 - 触发并忘记[OperationContract(IsOneWay = true)]

时间:2013-08-01 15:37:10

标签: c# wcf web-services operation-contract

我创建了一个WCF服务,它是第三方Web服务的包装器,增加了一些额外的功能。我的问题是,在我的方法中,我想调用第三方Web服务中的方法,但我不想等待这些方法的响应(Web服务非常慢)。我尝试在我的方法上使用[OperationContract(IsOneWay = true)],但得到以下错误:

  

System.InvalidOperationException:在“MyService.MyService”类型的方法'MyMethod'上声明的OperationContractAttribute无效。 OperationContractAttributes仅对在具有ServiceContractAttribute的类型中声明的方法有效。添加ServiceContractAttribute以键入“MyService.MyService”或从方法“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


}