gpt4 book ai didi

c# - WCF:客户端配置中的契约(Contract) 'X' 与服务契约(Contract)中的名称不匹配

转载 作者:太空宇宙 更新时间:2023-11-03 17:24:21 24 4
gpt4 key购买 nike

当我尝试在 VS 中运行我的 WCF 服务时显示此错误消息,并且我试图弄清楚“客户端配置”和“服务契约(Contract)”实际上指的是什么:

客户端配置中的契约(Contract)“IMyService”与服务契约(Contract)中的名称不匹配

我假设服务契约(Contract)部分指的是:

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(Namespace = "http://xxx/yyy", ConfigurationName = "IMyService")]
public interface IMyService
{
// CODEGEN: Generating message contract since the operation MyService is neither RPC nor document wrapped.
[System.ServiceModel.OperationContractAttribute(Action = "", ReplyAction = "*")]
[System.ServiceModel.XmlSerializerFormatAttribute()]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Task))]
SendResponse Request(SendRequest request);
}

知道客户端配置指的是什么吗?

编辑:在我的 web.config 中,我有 system.serviceModel 的这个部分:

 <system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="MyServiceBinding">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="XXX.YYY.MyService">
<endpoint binding="basicHttpBinding" bindingConfiguration="MyServiceBinding" name="MyServiceSendHttps"
contract="IMyService" />
<host>
<baseAddresses>
<add baseAddress="http://localhost" />
</baseAddresses>
</host>
</service>
</services>

最佳答案

我遇到了同样的问题,我花了很多时间寻找解决方案。然后我找到this article关于 WCF 工具 svcutil.exe 生成的代码。

不保证生成的 C# 代码也适用于服务端契约。在我的例子中,问题出在 ReplyAction = "*"(我也在问题中看到)。根据MSDN documentation :

Specifying an asterisk in the service instructs WCF not to add a reply action to the message, which is useful if you are programming against messages directly.

改变之后

[System.ServiceModel.OperationContractAttribute(Action = "", ReplyAction = "*")]

[System.ServiceModel.OperationContractAttribute(Action = "")]

问题解决了吗

关于c# - WCF:客户端配置中的契约(Contract) 'X' 与服务契约(Contract)中的名称不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32760079/

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