我也遇到过类似的情况。我有一个调用 Web 服务的类库,然后我有一个调用类库的 .DLL 的 .EXE。我认为使用的是 .EXE 的配置文件,而不是 .DLL 配置的配置文件。
但正如 Richard 上面所说,我必须完全限定命名空间。这有点痛苦。
下面正是我改变的。痛苦的是我不得不在两个地方改变它,
一个在创建服务引用时生成的 reference.cs 中,另一个在配置文件中。因此,每次我更改 Web 服务并执行“更新参考”时,我都必须再次更改 C# 代码。
1)您必须实际更改reference.cs中的ConfigurationName,如下所示:
发件人:[System.ServiceModel.ServiceContractAttribute(Namespace = "http://TFBIC.RCT.BizTalk.Orchestrations", ConfigurationName = " RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations")]
收件人:[System.ServiceModel.ServiceContractAttribute(Namespace = "http://TFBIC.RCT.BizTalk.Orchestrations", ConfigurationName = "TFBIC.RCT.HIP.Components.RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations")]
2) 然后更改所有相关 app.config(针对 .dll 和 .exe)中的“contract”值,如下所示:
发件人:
http://nxwtest08bt1.dev.txfb-ins.com/TFBIC.RCT.BizTalk.Orchestrations/WcfService_TFBIC_RCT_BizTalk_Orchestrations.svc
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ITwoWayAsync"
合同="RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations"
name="WSHttpBinding_ITwoWayAsync">
收件人:
http://nxwtest08bt1.dev.txfb-ins.com/TFBIC.RCT.BizTalk.Orchestrations/WcfService_TFBIC_RCT_BizTalk_Orchestrations.svc
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ITwoWayAsync"
contract="TFBIC.RCT.HIP.Components.RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestras" name="WSHttpBinding_ITwoWayAsync">
要明确一点 - 我怎么知道完整的命名空间是什么?
该程序的名称空间是 TFBIC.RCT.HIP。在其中,C# 代码有一个额外的
命名空间声明:
namespace RCTHipComponents