我正在尝试使用代码而不是app.config绑定我的WCF客户端,因为我需要更改不同部署的主机IP地址。
这是我的app.config:
for j in range(int(bc),int(bc)+3):
这是我的代码:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_ICX" maxReceivedMessageSize="1073741824" >
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://127.0.0.1/CX/CX.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ICX" contract="CXService.ICX" name="WSHttpBinding_ICX">
<identity>
<servicePrincipalName value="host/SilverStar" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
代码的最后一行不能编译为.EndPoint是只读属性。
请帮忙。
答案 0 :(得分:1)
试试这个:
Globals.CXClient.Endpoint.Address = new System.ServiceModel.EndpointAddress("your url here");
答案 1 :(得分:0)
这就是我做到的。
Globals.CXClient.Endpoint.Contract = new ContractDescription("CXService.ICX");
Globals.CXClient.Endpoint.Binding = binding1;
Globals.CXClient.Endpoint.Address = addr;
然而,我遇到了另一个问题。我试图更换部件:
<identity>
<servicePrincipalName value="host/SilverStar" />
</identity>
使用以下代码:
addr.Identity = new SpnEndpointIdentity("host/SilverStar");
这个再次无法编译,因为addr.Identity是只读的。
我也试过这个:
EndpointAddress addr = new EndpointAddress(new Uri("http://127.0.0.1/CX/CX.svc"), new SpnEndpointIdentity("host/SilverStar"), ???);
但最后一个参数是一个AddressHeaderCollection,我不知道应该放在那里。
请再次帮助。感谢。