【问题标题】:Constructor called with every method call WCF HTTPS构造函数调用每个方法调用 WCF HTTPS
【发布时间】:2011-05-18 17:36:57
【问题描述】:

我有一个奇怪的问题(或者可能对我来说很奇怪)

我有一个使用 wsHttpBinding 托管的 WCF WebSrvice。 (HTTP)

一切都很好。

我切换到 basicHttpBinding 因为我想从 PHP 访问它。我还将我的服务设为 HTTPS,所以现在它的 basicHttpBinding over HTTPS。

服务运行良好(几乎符合预期),方法也按预期运行。

但是我注意到,在上次配置(wsHttpBinding,HTTP)中,当客户端调用第一个方法时,我的服务构造函数曾经调用过,然后对于其他所有方法,它就再也没有调用过。 (这很好,因为我在构造函数中执行了一些代码,我只想在客户端开始使用服务时运行一次)

但在新配置(basicHttpBinding、HTTPS)中,每个执行的方法都会调用构造函数。

这是正常的,还是我做错了什么?如果它正常,那么首先,我应该为每个会话(客户端)运行一次的代码做什么。如果你有时间,为什么会这样,通过 HTTP 的行为是不同的,而通过 HTTPS 是不同的? (还是因为绑定的不同?)

谢谢。

【问题讨论】:

    标签: c# asp.net wcf https basichttpbinding


    【解决方案1】:

    WCF 服务的默认 InstanceContextModePerSession,您使用的绑定通过 HTTP 支持这一点。但是,HTTPS 阻止了这种默认会话行为的发生,因此您会看到 PerCall 行为(每次都会构造一个新的服务对象。)请参阅 this 帖子以了解纠正此问题的方法。

    【讨论】:

      猜你喜欢
      • 2013-08-10
      • 2018-08-20
      • 2013-01-02
      • 1970-01-01
      • 2011-06-19
      • 2016-05-31
      • 1970-01-01
      相关资源
      最近更新 更多