我有一个类似的案例。我有一个调用 Web 服务的类库,然后我有一个调用类库的 .DLL 的 .EXE。我认为使用的是 .EXE 的配置文件,而不是 .DLL 配置的配置文件。
但正如理查德上面所说,我必须完全限定命名空间。这有点痛苦。下面正是我改变的。痛苦是我不得不在两个地方更改它,一个在创建服务引用时生成的 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.Orchestras/WcfService_TFBIC_RCT_BizTalk_Orchestraations.svc
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ITwoWayAsync" contract="RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestration" name="WSHttpBinding_ITwoWaysyncA ">
到:
<端点地址 = http://nxwtest08bt1.dev.txfb-ins.com/TFBIC.RCT.BizTalk.Orchestras/WcfService_TFBIC_RCT_BizTalk_Orchestras.svc
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ITwoWayAsync" contract=" TFBIC.RCT.HIP.Components。 RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations" name="WSHttpBinding_ITwoWayAsync">
澄清一下——我怎么知道完整的命名空间是什么?该程序的名称空间是 TFBIC.RCT.HIP。在其中,C# 代码有一个额外的命名空间语句:
namespace RCTHipComponents