在WCF客户端上维护用户会话,同时调用负载平衡后的服务器

本文关键字:负载 调用 平衡 服务器 客户端 WCF 维护 会话 用户 | 更新日期: 2023-09-27 18:29:12

我的问题如下:-我有一个.Net MVC站点,它对承载在负载平衡服务器(BIGip)后面的两个服务器中的WCF服务进行了大量调用。

我必须在WCF服务上维护一个用户会话(由自定义令牌控制)。我的问题是,当很多用户登录网站时(对服务的大量并发调用),粘性会话就不起作用了。

我发现,当站点调用重用现有连接的服务时,负载平衡服务器会忽略粘性会话cookie,并将请求转发给通过该连接接收到调用的最后一台服务器。

我使用嗅探器(Wireshark)进行了检查,每个调用都会用正确的粘性会话令牌发送到负载平衡服务器。

当从头开始创建连接时,将考虑粘贴会话cookie,并将请求发送到正确的服务器。

那么,我该如何处理这种情况呢?我正在寻找在每次调用时强制创建新连接的方法,但属性KeepAliveEnabled="false"不起作用。

Tks。

在WCF客户端上维护用户会话,同时调用负载平衡后的服务器

我的问题是使用到Framework 4的正确keepAliveConnection配置解决的。波纹管是配置。

错误的

<bindings>
  <customBinding>
    <binding name="WSHttpBinding_IServiceSessionCreator" keepAliveEnabled="false">
      <httpTransport />
    </binding>
  </customBinding>
</bindings>

正确的

<bindings>
  <customBinding>
    <binding name="WSHttpBinding_IServiceSessionCreator" >
      <textMessageEncoding />
      <httpTransport allowCookies="false" keepAliveEnabled="false"/>
    </binding>
  </customBinding>
</bindings>

我不知道为什么第一个不起作用。我在这个链接中看到了http://msdn.microsoft.com/en-us/library/vstudio/ms730128(v=vs.100).aspx