我有一个奇怪的问题(或者对我来说可能只是很奇怪)
我有一个使用wsHttpBinding托管的WCF WebSrvice。 (HTTP)
一切都很好。
我切换到basicHttpBinding因为我想从PHP访问它。我还提供了HTTPS服务,现在通过HTTPS实现了basicHttpBinding。
该服务正常运行(几乎与预期一样),方法也按预期工作。
但是我注意到,在最后的配置(wsHttpBinding,HTTP)中,当客户端用来调用我的服务构造函数用于调用第一个方法时,然后对于其他每个方法,它再也没有调用过。 (这很好,因为我在构造函数中执行了一些代码,我想在客户端开始使用服务时只运行一次)
但是在新配置(basicHttpBinding,HTTPS)中,为每个执行的方法调用构造函数。
这是正常的,还是我做错了什么?如果它是正常的,那么首先,我应该为每个会话(客户端)运行一次的代码做些什么。如果你有时间,为什么会这样,通过HTTP行为是不同的,并且通过HTTPS它是不同的? (或者是因为绑定的不同?)
感谢。
答案 0 :(得分:4)
WCF服务的默认InstanceContextMode
为PerSession
,您使用的绑定通过HTTP支持此功能。但是,HTTPS会阻止此默认会话行为发生,因此您会看到PerCall
行为(每次都会构建一个新的服务对象。)请参阅this发布有关纠正此问题的方法。