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

本文关键字:调用 构造函数 方法 HTTPS WCF | 更新日期: 2023-09-27 17:57:07

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

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

一切都很好。

我切换到basicHttpBinding,因为我想从PHP访问它。我还制作了我的服务HTTPS,所以现在它的基本HTTPbinding over HTTPS。

该服务工作正常(几乎如预期),方法也按预期工作。

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

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

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

谢谢。

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

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