2012-03-10 30 views
5

tôi đã xử lý đơn giản sau đây (loại bỏ một số mã cho vissibilty cớ, nhưng bên dưới vẫn không)Phiên trong trình xử lý chung?

<%@ WebHandler Language="C#" Class="DownloadHandler" %> 
using System; 
using System.Web; 

public class DownloadHandler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     if (context.Session["t1"] != "true") 
     { 

     } 
    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 

Dòng if (context.Session["t1"] != "true") là không có "đối tượng tham chiếu không được đặt để một thể hiện của một đối tượng." và tôi không hiểu tại sao lại như vậy?

+0

Đối tượng nào là 'null'? Có phải 'context' hay' context.Session'? – svick

+2

Xin lỗi - tìm câu trả lời cho câu hỏi của riêng tôi. 'IRequiresSessionState' nên được thêm vào (như' public class DownloadHandler: IHttpHandler, IRequiresSessionState') – brother

Trả lời

11

Đó là vì trình xử lý http để truy cập Session bạn cần triển khai rõ ràng giao diện IRequiresSessionState.

Hãy nhớ rằng nếu bạn làm điều đó sẽ có một khóa ẩn trên đối tượng phiên và bạn sẽ không thể có nhiều trình xử lý trong cùng một trạng thái phiên được xử lý đồng thời.

Có giao diện IReadOnlySessionState cũng cho quyền truy cập trạng thái phiên chỉ đọc.

+0

i am phải đối mặt với cùng một vấn đề tôi đã sử dụng iRequiresSessionState trong mã trình xử lý của tôi nhưng vẫn không thể truy cập các giá trị phiên. khóa phiên vẫn là 0. bất cứ ai có thể cho tôi biết về điều này? –

Các vấn đề liên quan