我有一个WCF服务,它具有以下操作合同的接口:
[OperationContract(Name = "uploadFile")]
void uploadFile(RemoteFileInfo request);
[OperationContract(Name = "uploadFileAsync")]
Task uploadFileAsync(RemoteFileInfo request);
当我尝试托管此服务时,它会给我一个错误,即我不能拥有2个具有相同名称的合同,并且“uploadFile”和“uploadFIleAsync”违反了此规则。正如你所看到的,我将它们命名为不同,其中一个只是uploadFile
而另一个是uploadFileAsync
,那么WCF如何将它们视为“同名”?
答案 0 :(得分:0)
创建OperationContract
时,WCF会自动为您创建方法的异步版本。 WCF将此方法命名为与原始方法相同,但最后称为Async。话虽如此,你有两个名为uploadFileAsync
的方法,所以你得到了错误。因此,将您的界面更改为:
[OperationContract]
void uploadFile(RemoteFileInfo request);
您仍然可以通过以下方式在您的客户端中调用您的方法:
var result = await client.uploadFileAsync(request);