我从spring.net示例中显示的初始示例中进行了以下配置。
<wcf:channelFactory id="serverAppHost"
channelType="Contract.IHost, WcfService.Contract"
endpointConfigurationName="serverAppHostEndpoint" />
<client>
<endpoint name="serverAppHostEndpoint" address="http://xxxxx:yyyyy/program/service/host" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding1" contract="Contract.IHost"/>
</client>
我可以读为
IApplicationContext ctx = ContextRegistry.GetContext();
IHost val = (IHost)ctx.GetObject("serverAppHost");
如果上面的端点具有正确的IP地址和端口号,则所有这些都可以正常工作。
我正在寻找一种代码来编辑端点以使用启动时不知道的IP地址和端口号。有办法做到这一点吗?
答案 0 :(得分:0)
我解决了类似的问题。基本上,一旦您的应用程序运行,渠道工厂就不是很灵活。你最好使用服务代理并动态设置这样的终点,
var client = new SampleClient();
client.Endpoint.Address = new EndpointAddress(url);
client.Open();
responseMessage = client.ServiceMethod(requestMessage);
SampleClient是visual studio为您生成的服务代理。你需要一个WSDL来生成它。您仍然需要在Web.config中使用虚拟的Client / Endpoint标记,但是当您加载动态URL时,这将被覆盖。
如果您需要更多详细信息,请与我们联系。我可以引导您完成具体的实施。