操作合同名称不同但仍然存在错误

时间:2015-01-02 15:06:46

标签: c# wcf asynchronous

我有一个WCF服务,它具有以下操作合同的接口:

    [OperationContract(Name = "uploadFile")]
    void uploadFile(RemoteFileInfo request);

    [OperationContract(Name = "uploadFileAsync")]
    Task uploadFileAsync(RemoteFileInfo request);

当我尝试托管此服务时,它会给我一个错误,即我不能拥有2个具有相同名称的合同,并且“uploadFile”和“uploadFIleAsync”违反了此规则。正如你所看到的,我将它们命名为不同,其中一个只是uploadFile而另一个是uploadFileAsync,那么WCF如何将它们视为“同名”?

1 个答案:

答案 0 :(得分:0)

创建OperationContract时,WCF会自动为您创建方法的异步版本。 WCF将此方法命名为与原始方法相同,但最后称为Async。话虽如此,你有两个名为uploadFileAsync的方法,所以你得到了错误。因此,将您的界面更改为:

[OperationContract]
void uploadFile(RemoteFileInfo request);

您仍然可以通过以下方式在您的客户端中调用您的方法:

var result = await client.uploadFileAsync(request);