gpt4 book ai didi

c# - 不能在同一个契约(Contract)中有两个同名的操作(异步和非)

转载 作者:可可西里 更新时间:2023-11-01 02:59:26 24 4
gpt4 key购买 nike

当以下服务被激活时,我得到以下异常(不能在同一个契约(Contract)中有两个具有相同名称的操作,方法 ExecuteAsync 和 Execute)。

    [ServiceContract]
public interface IMyService
{
[OperationContract]
byte[] Execute(MyRequest request);

[OperationContract]
Task<byte[]> ExecuteAsync(MyRequest request);
}

如果您使用 svcutil.exe 创建服务引用,我想这很有意义,因为基于任务的操作是自动为您创建的。但是,我不想添加服务引用,而只是使用标准的 ChannelFactory 来创建 WCF channel 。如果不将异步方法重命名为其他方法,是否还有其他方法可以做到这一点?或者我必须将客户端上的同步方法包装在 Task.Run 中吗?

最佳答案

以上内容无效,因为 WCF 本身为您的案例 Execute() 中的每个 OperationContract 创建了两种方法,一种是同步方法,另一种是异步方法,可以通过编写 ServiceClientObj 在客户端调用。 ExexuteAsync(request),所以你不需要在IMyService中显式添加async方法。Framework自己负责生成每个Operation的async方法

关于c# - 不能在同一个契约(Contract)中有两个同名的操作(异步和非),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28612991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com