0

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

4

1 回答 1

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

如果您需要更多详细信息,请告诉我。我可以引导你完成具体的实现。

于 2013-02-06T03:45:05.973 回答