今天做一個vb.net的登入執行個體,前台使用Ext中Ajax ,後台用ashx檔案處理登入過程,並將使用者儲存在Session中總是出現在這個錯誤. [NullReferenceException: 未將對象引用設定到對象的執行個體。]
從網上查了一下有以下幾種原因:
1、ViewState 對象為Unll。
2、DateSet 空。
3、sql語句或Datebase的原因導致DataReader空。
4、聲明字串變數時未賦空值就應用變數。
5、未用new初始化對象。
6、Session對象為空白。
開始以為是 Session對象為空白的原因:將代碼修改以下
if context.Session.isNewSession then
context.Session("UserName")=username 'username為接受的使用者名稱
.................
這樣修改了以後,暈!!!!!,還是相同的錯誤.再Google吧
輸入:ashx 處理 session 中於搜到了,太不容易,看來搜尋也需要很多技巧
原來:在 ashx 中要使用Session ,需要繼承System.Web.SessionState.IRequiresSessionState介面.預設的之繼承了IHttpHandler介面
OK 直接看原始碼吧
複製代碼 代碼如下:<%@ WebHandler Language="VB" Class="logout" %>
Imports System
Imports System.Web
Imports System.Web.SessionState
Public Class logout : Implements IHttpHandler, IRequiresSessionState
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Session.Clear()
context.Response.Write("{'success':'true'}") 'JSON格式資料
End Sub
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class