我创建了一个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
}