WCF中有關Session的小實驗

2021-09-08 15:53:48 字數 893 閱讀 4910

wcf是面向服務的設計,對外開放介面,傳遞所需的引數,獲得預期的資料,但有時候我們需要類似asp.net中session的功能,能夠在服務端記錄客戶端的訪問,使得下次呼叫時不用輸入使用者名稱也能知道是當前的客戶端呼叫。那麼wcf中能不能實現呢,為此我做了幾個簡單的試驗。

這個試驗的關鍵類在與servicemodel中的operationcontext類,這個裡中提供了當前的操作上下文物件,並且有乙個關鍵的current物件,這個物件中儲存了客戶端的一些資訊。包括乙個sessionid。這裡寫了個測試的類

[servicecontract]

public inte***ce

ihello

public class

hello:ihello

public string say(string content)

}

就是客戶端先使用使用者名稱登入,然後服務端記錄這個使用者名稱對應的sessionid,客戶端在下次呼叫時,雖然沒有使用者名稱,卻依然可以通過sessionid找到使用者名稱,從而達到省略使用者名稱引數的作用。

而且通過測試知道,這個sessionid對於同乙個客戶端來說,第二次呼叫時,sessionid中後面的id部分就會變為id=2,這個值會隨呼叫次數而增加。

有了這個sessionid,可以做很多事情。比如寫乙個方法來提取當前的呼叫客戶端物件等。。。

static 

list

list = new

list

();public void login(string name)

public string getcurrentuser()

有關WCF的契約問題

wcf中的契約包括4種 資料契約 datacontract datamember 服務契約 servicecontract operactioncontract 訊息契約 messagecontract 異常契約 faultcontract 用於定義服務操作的服務wcf契約 service cont...

Oracle中有關Latch的介紹

本文向各位闡述oracle的latch機制,latch,用金山詞霸翻譯是門插栓,閉鎖,專業術語叫鎖存器,我開始接觸時就不大明白為什麼不寫lock,不都是鎖嗎?只是翻譯不同而以?研究過後才知道兩者有很大的區別。latch是oracle提供的輕量級鎖資源,他用於快速,短時間的鎖定資源,防止多個併發程序同...

c 中有關size type的問題

sizt t是 c 的乙個標準的 typedef.全域性有效,定義在全域性命名空間中 size type是 stl定義的,只在 namespace std 中有效vc6中定義 size t 為typedef unsigned int size t size type應該是 c 為例如 string ...