WCF会话设计

本文关键字:会话 WCF | 更新日期: 2023-09-27 18:18:59

我创建了一个带有basicHttpBinding的WCF服务,它被许多消费者使用。现在,我需要实现一个基于会话的跟踪机制,以便在多个调用之间保持第三方连接的活动。

我知道basicHttpBinding不支持会话状态,但我想让服务在"每个会话"模式下运行,而不需要创建一个新的wsHttpBinding并破坏我当前的消费者。

有没有一种简单的方法来实现"每会话"模式,而不会潜在地破坏我当前的消费者?

WCF会话设计

你可以在app.config中创建一个新的wsHttpBinding,并为当前的消费者维护现有的basicHttpBinding。您只需要为每个绑定在app.config中添加一个服务端点。您可能希望为wsHttpBinding使用一个不同的地址。

<service name="MyService">
  <endpoint address="http://domain.com/MyService.svc" binding="basichHttpBinding" bindingConfiguration="basicHttpBindingConfig" Contract="MyService"/>
  <endpoint address="https://domain.com/MyService.svc" binding="wsHttpBinding" bindingConfiguration="wsHttpBindingConfig" Contract="MyService"/>
</service>

现在,任何使用http端点的人将使用basicHttpBinding,任何使用https端点的人将使用wsHttpBinding。

这种简单的配置就是WCF的优点。