并不是所有Binding支持會話(session)功能。
比如basicHTTP就不支持session功能。
參考文章:
http://www.codeproject.com/Articles/86007/ways-to-do-WCF-instance-management-Per-call-Per
另外參考以下文字:
以下文字來自http://www.cnblogs.com/TivonStone/archive/2011/05/18/2050407.html
SessionMode:設置會話的模式(默認情況下是Allowed)
是客戶端代理與服務器之間的會話模式,同樣也有三種類型:Allowed-允許會話、NotAllowed-不允許會話、Required-要求會話(需要有支持會話的Binding支持,WsHttpBinding、NetTcpBinding等)
若要設計一個會話契約,我們建議使用Required 方式,而不是默認值Allowed。
SessionMode.Required值要求必須使用傳輸層會話,但應用層會話卻不是必要的,如果服務終結點的綁定沒有維持一個傳輸層會話,就不能為這樣的服務契約配置SessionMode.Required。這一約束條件會在裝載服務時進行驗證。但是,我們仍然可以將服務配置為單調服務,服務實例會在每次客戶端調用期間創建與銷毀實例。只有當服務被配置為會話服務時,服務實例才會存活于整個客戶端會話中。
InstanceContextMode:指定可用來處理包含在傳入信息中的調用的服務實例數(默認情況下是PerSession)
為服務端實現服務契約類的實例模式,有三種類型,分別為:
PerCall-每次服務操作調用創建一次,調用完后進行銷毀;
PerSession-同一個會話期間創建一次,客戶端代理第一次操作(IsInitiating = true)調用創建,調用代理的Close方法銷毀或者調用IsTerminating服務操作銷毀;
Single-服務只會創建一次,服務開始時創建,服務完成時銷毀
(順便說一下,Session的支持是通過建立Sessionful Channel來實現的,但是并不是所有的Binding都支持Session,比如BasicHttpBinding就不支持Session)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。