对于将部署到不同客户的应用程序使用服务引用,我有些疑问。它是vb.net上的WCF服务,将托管在Windows服务中,并且将由具有不同IP地址的不同客户使用。不同的环境,可以这么说。
我已经制作了服务器和客户端。它们在客户端上使用服务引用工作得很好,但由于这些需要服务的URL(具有以下结构: net.tcp:// SomeHost:6666 / SomeService ),问题是:如何在客户环境中使用服务参考?我正在考虑以编程方式更改其URL,但我不知道是否可能。
当然,主机名将从客户更改为客户,但服务引用是静态的。我想过使用不同的方法,例如:http://mstecharchitect.blogspot.com.ar/2009/01/invoking-wcf-service-without-service.html。但这会让我失去服务参考的好处,据我所知,它创建了所需的代理,因此我可以在客户端使用它。
无论您需要哪些其他信息,请不要犹豫。并提前感谢!
答案 0 :(得分:0)
您可以在配置文件(例如,appsettings)中存储您的服务端点地址,在代码中您只更新主机名。
您的appsettings将包含类似net.tcp:// {0}:6666 / SomeService。
创建客户端(代理)实例时 - 您将添加特定主机并传递此构建的地址。
类似的东西:
客户端上的app.config:
<appSettings>
<add key="YourService.ClientAddress" value="net.tcp://{0}:6666/SomeService" />
. . .
然后,在代码中,
string endpointUrl = string.Format(ConfigurationManager.AppSettings["YourService.ClientAddress"], Your_Host_name);
YourClient client = new YourClient(YourEndpointName, endpointUrl);
答案 1 :(得分:0)
您可以为每个客户端使用不同的配置文件,请查看本文Getting Away with Client Config in WCF