在ASP.NET Web Services 中使用Session
来源:互联网 发布:excel成绩表数据模版 编辑:程序博客网 时间:2024/04/20 03:20
凡是有使用微軟ASP或ASP.NET開發過web應用程式經驗的人都知道,藉session(工作階段)物件可以來維護狀態。那麼,ASP.NET Web Services是不是也可以使用Session來維護狀態呢? 答案是肯定的。這篇文章就是要簡單的跟大家介紹在ASP.NET Web Services中如何來設定使用Session(HttpSessionState),以及ASP.NET Web Services的用戶端該如何才能讓此Session正常運作來維護狀態。
ASP.NET Web Services預設並未支援Session,所以在Web Services程式碼中不能直接使用Session,如果要使用,則必須先做一些設定。首先請確認web.config組態設定檔當中<sessionState>的mode屬性值不是Off,如果是Off,則Session不會運作,後續的其他設定也不會有作用。其次須設定Web Services物件類別繼承System.Web.Services.WebService類別。繼承此類別讓Web Services類別可以直接使用ASP.NET物件,如Session、Application等。最後,在方法宣告的< WebMethod ()>屬性 (Attribute)中加入(EnableSession:=True)即可。
下面是一個ASP.NET Web Service使用Session的簡單例子。在這個例子中,如果Session發揮維護狀態的效果,則同一使用者每呼叫一次Web Service的Counter方法,回傳值會以加一的方式遞增。
<WebService(Namespace:="http://127.0.0.1/webServices/")> _
Public Class sessionService
Inherits System.Web.Services.WebService
<WebMethod(EnableSession:=True)> _
Public Function Counter() As Integer
Dim count As Integer
If Session("Count") Is Nothing Then
count = 1
Else
count = Session("Count") + 1
End If
Session("Count") = count
Return count
End Function
End Class
通常在完成了上面一個Web Service後,開發者會在IE瀏覽器中進行測試,結果確實可以得到預期中Session發揮了維護狀態的效果。但是,Web Services並不是開發來讓人用瀏覽器瀏覽的,而是由用戶端程式來呼叫使用的。在用戶端程式中叫用上面這個Web Service時,Session是否還會發揮效果呢? 答案還是肯定的,但是它卻不像用瀏覽器叫用一般的簡單直接,而是有些事情必須注意的。
下面是一個呼叫上面這個Web Service的簡單範例。 做法是透過在.NET Framework裡建立呼叫Web Service的Proxy代理程式(WsNamespace.sessionService)來呼叫。
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim ws As New WsNamespace.sessionService()
Dim count As Integer
count = ws.Counter()
Label1.Text = count
End Sub
Session的運作預設是使用Cookie來存放和傳遞辨識用戶端的SessionID,如果沒有Cookie的配合,則依預設的做法,Web Services無法透過SessionID來辨識使用者,如此便造成Session無法運作。在IE瀏覽器中進行測試Web Services時,通常瀏覽器都會支援Cookie,也因此Session可以正常發揮效果,但在用戶端程式中呼叫Web Services時,則必須在用戶端程式中利用CookieContainer來存放Cookie,如此才能傳遞SessionID來支援Session的運作。下面的例子就是改寫前面的範例,在代理程式中設定CookieContainer。
‘產生cookieContainer物件實例
Private CookieCnt As New System.Net.CookieContainer()
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim ws As New WsNamespace.sessionService()
‘將CookieContainer物件實例設給呼叫Web Services的Proxy來存放Cookie
ws.CookieContainer = CookieCnt
Dim count As Integer
count = ws.Counter()
Label1.Text = count
End Sub
執行這個範例將可得到預期中count值依次加一的結果。
以上簡單的介紹了在ASP.NET Web Services 中使用Session的做法以及用戶端程式該注意的地方,希望對大家有所幫助。
ASP.NET Web Services預設並未支援Session,所以在Web Services程式碼中不能直接使用Session,如果要使用,則必須先做一些設定。首先請確認web.config組態設定檔當中<sessionState>的mode屬性值不是Off,如果是Off,則Session不會運作,後續的其他設定也不會有作用。其次須設定Web Services物件類別繼承System.Web.Services.WebService類別。繼承此類別讓Web Services類別可以直接使用ASP.NET物件,如Session、Application等。最後,在方法宣告的< WebMethod ()>屬性 (Attribute)中加入(EnableSession:=True)即可。
下面是一個ASP.NET Web Service使用Session的簡單例子。在這個例子中,如果Session發揮維護狀態的效果,則同一使用者每呼叫一次Web Service的Counter方法,回傳值會以加一的方式遞增。
<WebService(Namespace:="http://127.0.0.1/webServices/")> _
Public Class sessionService
Inherits System.Web.Services.WebService
<WebMethod(EnableSession:=True)> _
Public Function Counter() As Integer
Dim count As Integer
If Session("Count") Is Nothing Then
count = 1
Else
count = Session("Count") + 1
End If
Session("Count") = count
Return count
End Function
End Class
通常在完成了上面一個Web Service後,開發者會在IE瀏覽器中進行測試,結果確實可以得到預期中Session發揮了維護狀態的效果。但是,Web Services並不是開發來讓人用瀏覽器瀏覽的,而是由用戶端程式來呼叫使用的。在用戶端程式中叫用上面這個Web Service時,Session是否還會發揮效果呢? 答案還是肯定的,但是它卻不像用瀏覽器叫用一般的簡單直接,而是有些事情必須注意的。
下面是一個呼叫上面這個Web Service的簡單範例。 做法是透過在.NET Framework裡建立呼叫Web Service的Proxy代理程式(WsNamespace.sessionService)來呼叫。
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim ws As New WsNamespace.sessionService()
Dim count As Integer
count = ws.Counter()
Label1.Text = count
End Sub
Session的運作預設是使用Cookie來存放和傳遞辨識用戶端的SessionID,如果沒有Cookie的配合,則依預設的做法,Web Services無法透過SessionID來辨識使用者,如此便造成Session無法運作。在IE瀏覽器中進行測試Web Services時,通常瀏覽器都會支援Cookie,也因此Session可以正常發揮效果,但在用戶端程式中呼叫Web Services時,則必須在用戶端程式中利用CookieContainer來存放Cookie,如此才能傳遞SessionID來支援Session的運作。下面的例子就是改寫前面的範例,在代理程式中設定CookieContainer。
‘產生cookieContainer物件實例
Private CookieCnt As New System.Net.CookieContainer()
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim ws As New WsNamespace.sessionService()
‘將CookieContainer物件實例設給呼叫Web Services的Proxy來存放Cookie
ws.CookieContainer = CookieCnt
Dim count As Integer
count = ws.Counter()
Label1.Text = count
End Sub
執行這個範例將可得到預期中count值依次加一的結果。
以上簡單的介紹了在ASP.NET Web Services 中使用Session的做法以及用戶端程式該注意的地方,希望對大家有所幫助。
- 在ASP.NET Web Services 中使用Session
- Session State in ASP.NET Web Services
- ASP.net web servie中使用session
- asp.net在ashx中使用session
- 在Asp.net Ajax中使用Session
- 在asp.net handler 中 使用 session
- 在ASP.NET中使用Session
- asp.net web services
- asp.net中,在.ashx文件中使用Session
- 在ASP.NET中使用Session常见问题集锦
- 在ASP.NET中使用Session常见问题集锦
- 在ASP.NET中使用Session常见问题集锦
- 在ASP.NET中使用Session常见问题集锦
- 在ASP.NET中使用Session常见问题集锦
- 在ASP.NET中使用Session常见问题集锦
- 在ASP.NET中使用Session常见问题集锦
- 在ASP.NET中使用Session常见问题集锦
- 在asp.net中使用session常见问题集锦
- 在05下如何将datagridview转化为datatable
- 苏州软件评测中心有限公司招聘信息
- 怎样保持您的电脑不染病毒?
- 最近比较烦
- linux操作系统下c语言编程入门
- 在ASP.NET Web Services 中使用Session
- 如何迈进测试的门槛
- Vmstat命令详解
- 嵌入式软件方面最重要的课程
- Java数据库基本操作
- datagrid中checkbox全选
- “白盒”静动测试两齐全
- JavaScript判断Form中的Radio是否有未选中的
- 什么是网站PV值?