我已经创建了一个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
}发布于 2013-08-01 15:49:59
你看过下面的内容吗?http://msdn.microsoft.com/en-us/library/ms731177.aspx#Y574
和http://blogs.msdn.com/b/rjacobs/archive/2011/06/30/how-to-implement-a-wcf-asynchronous-service-operation-with-task-lt-t-gt.aspx
https://stackoverflow.com/questions/17998499
复制相似问题