2011-05-18 83 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發佈有關糾正此問題的方法。