求大神解释一下,WCF方面的问题

NotNull 2015-01-12 10:40:10

如图

服务端,是个静态的变量,第一次实例化ChannelFactory,传的参数,会被第二次实例化后,传的参数覆盖


为什么会被覆盖?


我想要的做的效果,根据我传的参数,得到不同数据库连接地址,访问不同的数据库(数据库结构一样)

怎么不被覆盖,或者有其他方案吗?
...全文
161 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
扯淡砖家 2015-01-12
  • 打赏
  • 举报
回复
引用 12 楼 lincolnandlinda 的回复:
楼主给出的代码反应出的问题,和静态变量没有任何关系。。。
他的字符串被第二次的代码覆盖了,你仔细看他的注释
lincolnandlinda 2015-01-12
  • 打赏
  • 举报
回复
楼主给出的代码反应出的问题,和静态变量没有任何关系。。。
扯淡砖家 2015-01-12
  • 打赏
  • 举报
回复
引用 8 楼 lincolnandlinda 的回复:
没明白,这个跟静态变量有什么关系。。。
因为静态变量是固定的,是独一无二的。哪怕你实例化一千个对象。这个静态的值也只会是你最后一次成功赋值的那个结果
Forty2 2015-01-12
  • 打赏
  • 举报
回复
两种方法: 1、启用WCF会话,不使用静态变量,而是会话变量。合同类似于(注意那个SessionMode):
[ServiceContract( SessionMode = SessionMode.Required)]
public interface IServiceService
{
    [OperationContract(IsInitiating = true)]
    void DoWork(Guid guid);

    [OperationContract]
    string GetString();
}
2、是每个调用都包含一个额外的guid参数,比如IService.GetString(Guid target)。这个设计比‘会话’灵活一些,服务器也不需要保持状态。
NotNull 2015-01-12
  • 打赏
  • 举报
回复
引用 5 楼 lovelj2012 的回复:
哪有客户端传连接字符串的?? 负载均衡,不是客户端决定指向哪台服务器!
最开始是那么做的,一个服务端绑定一个数据库,可是实施人员,嫌麻烦,就弄成了一个服务端绑定多个数据库,所以得传一个传参数过去,告诉数据库访问哪个数据库
lincolnandlinda 2015-01-12
  • 打赏
  • 举报
回复
没明白,这个跟静态变量有什么关系。。。
於黾 2015-01-12
  • 打赏
  • 举报
回复
引用 6 楼 bjf814 的回复:
[quote=引用 1 楼 wow818wow 的回复:] 因为你用了静态变量,所以就覆盖了。解决办法就是不要用静态变量
引用 2 楼 Z65443344 的回复:
不要使用静态变量
不使用静态变量的话,每次访问接口,都要传一个参数![/quote] 封装一下,放到类里,每次传GUID自动生成一个,不要代码写死
NotNull 2015-01-12
  • 打赏
  • 举报
回复
引用 1 楼 wow818wow 的回复:
因为你用了静态变量,所以就覆盖了。解决办法就是不要用静态变量
引用 2 楼 Z65443344 的回复:
不要使用静态变量
不使用静态变量的话,每次访问接口,都要传一个参数!
江南小鱼 2015-01-12
  • 打赏
  • 举报
回复
哪有客户端传连接字符串的?? 负载均衡,不是客户端决定指向哪台服务器!
lincolnandlinda 2015-01-12
  • 打赏
  • 举报
回复
在你的Contract实现类中加上以下Attribute [ServiceBehavior( InstanceContextMode=InstanceContextMode.PerCall)]
  • 打赏
  • 举报
回复
完全没搞懂你是什么需求导致要这么设计
於黾 2015-01-12
  • 打赏
  • 举报
回复
不要使用静态变量
扯淡砖家 2015-01-12
  • 打赏
  • 举报
回复
因为你用了静态变量,所以就覆盖了。解决办法就是不要用静态变量

110,537

社区成员

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

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

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