操作合约名称不同,但仍会抛出错误

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);