2011-05-18 86 views
2

我有一个奇怪的问题(或者也许只是怪我)构造函数调用每一个方法调用WCF HTTPS

我有一个WCF WebSrvice主办了的wsHttpBinding。 (HTTP)

一切都很好。

我切换到basicHttpBinding,因为我想从PHP访问它。我也做了我的服务HTTPS,所以现在它的基本HTTP绑定通过HTTPS。

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

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

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

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

谢谢。

回答

4

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