使用每个方法调用的构造函数调用WCF HTTPS

时间:2011-05-18 17:36:57

标签: c# asp.net wcf https basichttpbinding

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

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

一切都很好。

我切换到basicHttpBinding因为我想从PHP访问它。我还提供了HTTPS服务,现在通过HTTPS实现了basicHttpBinding。

该服务正常运行(几乎与预期一样),方法也按预期工作。

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

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

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

感谢。

1 个答案:

答案 0 :(得分:4)

WCF服务的默认InstanceContextModePerSession,您使用的绑定通过HTTP支持此功能。但是,HTTPS会阻止此默认会话行为发生,因此您会看到PerCall行为(每次都会构建一个新的服务对象。)请参阅this发布有关纠正此问题的方法。