C# 每次方法调用WCF HTTPS时都调用构造函数

C# 每次方法调用WCF HTTPS时都调用构造函数,c#,asp.net,wcf,https,basichttpbinding,C#,Asp.net,Wcf,Https,Basichttpbinding,我有一个奇怪的问题(或者可能只是对我来说很奇怪) 我有一个由wsHttpBinding托管的WCF Web服务。(HTTP) 一切都很好 我切换到basicHttpBinding,因为我想从PHP访问它。我还将我的服务设置为HTTPS,因此现在它是HTTPS上的basicHttpBinding 服务运行良好(几乎如预期),方法也按预期运行 然而,我注意到,在上一次配置(wsHttpBinding,HTTP)中,当客户机用来调用我的服务构造函数用来调用的第一个方法时,它再也没有调用过其他方法。(这

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

我有一个由wsHttpBinding托管的WCF Web服务。(HTTP)

一切都很好

我切换到basicHttpBinding,因为我想从PHP访问它。我还将我的服务设置为HTTPS,因此现在它是HTTPS上的basicHttpBinding

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

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

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

这是正常的,还是我做错了什么?如果这是正常的,那么首先,对于我希望在每个会话(客户机)上运行一次的代码,我应该做什么。如果您有时间,为什么在HTTP上的行为不同,而在HTTPS上的行为不同?(还是因为绑定的不同?)


谢谢。

WCF服务的默认
InstanceContextMode
PerSession
,您使用的绑定通过HTTP支持该模式。然而,HTTPS阻止了这种默认的会话行为的发生,因此您看到了
PerCall
行为(每次都将构造一个新的服务对象)。请参阅关于纠正这种情况的方法的帖子