操作合约名称不同,但仍会抛出错误
Operation contract name is different but is still throwing errors
我有一个 WCF 服务,它具有与以下操作契约的接口:
[OperationContract(Name = "uploadFile")]
void uploadFile(RemoteFileInfo request);
[OperationContract(Name = "uploadFileAsync")]
Task uploadFileAsync(RemoteFileInfo request);
当我尝试托管此服务时,它给我一个错误,即我不能有 2 个同名合同,并且 "uploadFile" 和 "uploadFIleAsync" 违反了此规则。如您所见,我对它们进行了不同的命名,其中一个是 uploadFile
,一个是 uploadFileAsync
那么 WCF 如何将它们视为 "same name"?
当您创建 OperationContract
时,WCF 会自动为您创建该方法的异步版本。 WCF 将此方法命名为与原始方法相同,但在末尾添加为 Async。话虽如此,您有两个名为 uploadFileAsync
的方法,所以您收到了错误。因此,将您的界面更改为:
[OperationContract]
void uploadFile(RemoteFileInfo request);
您仍然可以通过以下方式在您的客户端中调用您的方法:
var result = await client.uploadFileAsync(request);
我有一个 WCF 服务,它具有与以下操作契约的接口:
[OperationContract(Name = "uploadFile")]
void uploadFile(RemoteFileInfo request);
[OperationContract(Name = "uploadFileAsync")]
Task uploadFileAsync(RemoteFileInfo request);
当我尝试托管此服务时,它给我一个错误,即我不能有 2 个同名合同,并且 "uploadFile" 和 "uploadFIleAsync" 违反了此规则。如您所见,我对它们进行了不同的命名,其中一个是 uploadFile
,一个是 uploadFileAsync
那么 WCF 如何将它们视为 "same name"?
当您创建 OperationContract
时,WCF 会自动为您创建该方法的异步版本。 WCF 将此方法命名为与原始方法相同,但在末尾添加为 Async。话虽如此,您有两个名为 uploadFileAsync
的方法,所以您收到了错误。因此,将您的界面更改为:
[OperationContract]
void uploadFile(RemoteFileInfo request);
您仍然可以通过以下方式在您的客户端中调用您的方法:
var result = await client.uploadFileAsync(request);