动态修改wcf地址,winform程序,通过连接wcf访问数据库,可以在代码里切换wcf地址吗?

sunhouju 2015-12-22 07:17:28
系统可能会放在不同的服务器,这时wcf的地址就会有多个,怎么样在登陆的时候指定wcf地址呢?

我是在登录窗体内通过代码修改的.exe.config文件里的address,但是软件已经启动了,修改那个地址也没用,软件还是使用的启动时读取的那个地址,除了重启软件还有没有其他的方法,也就是直接修改软件启动后的wcf地址

另外我在启动软件前修改了软件.exe.config文件的wcf的address,启动软件修改有效,但是在软件启动后代码动态修改并不会对软件起作用,而是要重启软件。

所以最终的问题是能不能不需要重新启动软件而起作用呢?
...全文
262 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qbilbo 2015-12-22
  • 打赏
  • 举报
回复
当然也可以用懒一点的方法: xxxSerivceClient cli = new xxxServiceClient(); cli.EndPoint.Address = new System.ServiceModel.EndpointAddress (服务地址); 第一种方法可以不用的config文件中进行任何配置。第二种方法config文件中必须有相关配置。
qbilbo 2015-12-22
  • 打赏
  • 举报
回复
如果你仔细看看你的那个xxxServiceClient的构造函数,你可以发现一个参数为:System.ServiceModel.Channels.Binding, System.ServiceModel.EndpointAddress 的构造函数。 第一个参数可以这样定义: 如果服务地址是:net.tc://....,那么binding可以这样定义: System.ServiceModel.NetTcpBinding binding= new System.ServiceModel.NetTcpBinding(); 如果服务地址是:http://....,那binding可以这样定义: System.ServiceModel.BasicHttpBinding = new System.ServiceModel.BasicHttpBinding(); 其它协议以此类推。 binding.CloseTimeout = new TimeSpan(0, 1, 0); binding.OpenTimeout = new TimeSpan(0, 1, 0); binding.MaxBufferSize = 2147483647; ..... 这个可以参考config文件中的内容。 第二个参数 System.ServiceModel.EndpointAddress address = new System.ServiceModel.EndpointAddress (服务地址); 最后 xxxServiceClient = new xxxServiceClient(binding,address);

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧