2010-02-10 119 views
3

我有超过三个网络服务, 在那一个是主站点,其他人是客户站点。如何更改WCF服务端点?

在我的用户界面一个文本框是可用的,在该文本框中,我需要给该目标终点地址 从文本框我需要调用客户端服务。

例如:

客户端1终点服务名称:

    http://localhost:1524/WebServiceService.svc" 

客户机2结束点服务名称:

通过

Rajagopalk

    http://localhost:8085/WebServiceService.svc" 

如果我给“本地主机:1524”在文本框客户端1服务将调用, 如果我给“本地主机:8085”在文本框客户端2服务将调用,

回答

6

你在IIS托管的WCF服务?在这种情况下,您的服务地址由IIS配置和服务的* .svc文件所在的虚拟目录决定。

因此,要更改服务器上的某些内容,您需要检查并修改IIS配置。

要更改的客户端,有您的端点定义应包含一个web.config(用于ASP.NET网)或(的applicationName).exe.config - 改变那里的端点地址:

<client> 
    <endpoint name="YourEndpointName" 
     address="http://localhost:8085/WebServiceService.svc" 
     binding="......." bindingConfiguration="............." 
     contract="..................." /> 
</client> 

您需要在<endpoint>配置元素的address=属性中指定完整的目标Web服务地址。

可以定义为同一服务的多个端点,并选择当实例的客户端代理使用哪一个:

MyServiceProxy client = new MyServiceProxy("name of endpoint configuration"); 

,并与这一点,你可以很容易地端点的几种定义之间切换。

UPDATE:如果你想以编程方式设置从代码客户端地址,您需要在创建客户端代理时要做到以下几点:

// create custom endpoint address in code - based on input in the textbox 
EndpointAddress epa = new EndpointAddress(new Uri(textbox.Text)); 

// instantiate your cilent proxy using that custom endpoint address 
// instead of what is defined in the config file 
MyServiceProxy client = new MyServiceProxy("name of endpoint configuration", epa); 
+0

喜, <端点名称=“YourEndpointName” 地址=“http:// localhost:8085/WebServiceService.svc” binding =“.......”bindingConfiguration =“.............” contract =“... ................“/> 在地址节点而不是本地主机:8085我需要给文本框VAL UE。请简要解释一下。因为我是WCF – Rajagopalk 2010-02-10 06:08:13

+0

的新手,请不要将xml配置文件放入注释中 - 真的很难阅读。更新您的原始问题与额外的信息! – 2010-02-10 06:51:49

+0

嗨, 我需要从一台服务器发送数据到许多客户端。取决于他们的任务,我需要维护服务器设置,在该设置中,我需要提到客户端URI,这取决于我需要访问的客户端服务的URI,我需要将数据传输到该客户端。更多的事情是如何还要维护App.Config文件。 谢谢, Rajagopalk – Rajagopalk 2010-02-11 13:54:55