更改WCF端点

时间:2013-01-23 17:35:57

标签: c# wcf wcf-binding spring.net wcf-endpoint

我从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地址和端口号。有办法做到这一点吗?

1 个答案:

答案 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时,这将被覆盖。

如果您需要更多详细信息,请与我们联系。我可以引导您完成具体的实施。