2012-07-12 37 views
35

Tôi muốn truy cập một số giá trị (đã được đặt trong tệp.aspx) trong tệp .ashx. Tôi đã cố gắng để có được giá trị đó bằng cách sử dụng chuỗi truy vấn, phiên vv nhưng mỗi lần nó không thành công. Bất cứ ai có thể đề nghị tôi làm thế nào chúng ta có thể truy cập vào giá trị phiên trong tập tin .ashx?Cách truy cập Phiên trong tệp .ashx?

+0

"HttpContext.Current.Session" tôi đã thử mông này luôn có được ngoại lệ. –

+4

Ngoại lệ bạn đang nhận được là gì? – mrd

+0

@mrd +1 - Mọi thứ có thể bị lỗi theo vài nghìn cách .. :) – Onkelborg

Trả lời

40

Trong file aspx:

Session.Add("filename", "Test.txt"); 


Sau khi bạn đã thiết lập giá trị session trong file aspx. Sử dụng sau để lấy giá trị trong tệp ashx.

Trong file ashx:

public class ImageHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     string Name = ""; 
     if (context.Session["filename"] != null) 
     Name = context.Session["filename"].ToString(); 
    } 
} 
+0

Cách đặt biến phiên? context.Session ["filename"] = "somevalue"; có đúng không? – efirat

+1

Nếu bạn đang thiết lập biến phiên trong trang aspx thì chỉ cần sử dụng Session ("filename") = "somevalue". Và nếu bạn đang thiết lập trong xử lý như trên thì sử dụng context.Session ["filename"] = "somevalue". – mrd

+9

Phần chính của câu trả lời này là trình xử lý phải được sửa đổi để kế thừa từ IRequiresSessionState để có quyền truy cập vào Phiên. –

0

Hãy thử điều này,

HttpContext.Current.Session 
+4

điều này vẫn yêu cầu thông tin từ câu trả lời ở trên –

51

Trong tập tin ashx.cs, cũng "thực hiện" giao diện System.Web.SessionState.IReadOnlySessionState hoặc System.Web.SessionState.IRequiresSessionState.

Bạn không phải triển khai bất kỳ phương pháp nào, chỉ sự hiện diện của điều này làm cho Phiên khả dụng (ở chế độ chỉ đọc hoặc đọc/ghi), thông qua context.Session.

Tiêu đề sẽ như thế nào:

public class MyHandler: IHttpHandler, System.Web.SessionState.IReadOnlySessionState 
+0

Cảm ơn bạn !!!!! – kevin

+0

Câu trả lời thú vị! Trong một cách cứu mạng tôi. Cảm ơn bạn! –

+2

Tôi yêu bạn. Đối với một số lý do vấn đề này chỉ biểu hiện cho tôi trong Visual Studio 2013 (VS2013). Có thể vì phiên bản .NET hoặc phiên bản IIS Express mà nó sử dụng (IIS 7?) Cảm ơn bạn đã trợ giúp! – Suamere

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