2008-11-16 41 views
14

Tôi có một đối tượng chính bảo mật tùy chỉnh mà tôi đặt trong global.asax cho luồng hiện tại và tất cả là tốt, không có vấn đề bình thường.Asp.net System.Web.HttpContext.Current.Session null trong global.asax

Tuy nhiên, tôi chỉ thêm một tính năng hình ảnh động bằng cách trang phục vụ hình ảnh và bất cứ khi nào trang hình ảnh động được tải System.Web.HttpContext.Current.Session là null trong global.asax ngăn cản tôi từ thiết lập hiệu trưởng an ninh như bình thường và các vấn đề xếp tầng từ thời điểm đó trở đi.

Thông thường phiên là null trong global.asax chỉ một lần trong một phiên khi bắt đầu người dùng đăng nhập, sau đó nó luôn có sẵn với ngoại lệ duy nhất này.

Trang hình ảnh động được nạp khi trình duyệt đi qua một Tage hình ảnh trong trang tức là gốc

Tôi đoán rằng đây là một số khía cạnh của thực tế là trình duyệt được yêu cầu trang đó mà không gửi một số thông tin quan trọng với nó?

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

25

John,

Tôi giả sử bạn đang sử dụng một trình xử lý ashx cho xử lý. Nếu vậy, hãy đảm bảo lấy được từ IRequiresSessionState ví dụ:

public class Images : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
{ } 

Nếu bạn không sử dụng ashx, bạn có thể mô tả ý nghĩa của trang hình ảnh động không?

Josh

+1

Hi Josh, Bạn là người yêu thích của tôi ngay bây giờ!:) Không, tôi đã sử dụng trang aspx chuẩn vì tất cả các ví dụ về trình xử lý được đề cập bằng cách sử dụng phần mở rộng tệp và thay đổi cấu hình, không biết về ashx, thử nó và yêu cầu dẫn xuất bạn đã đề cập. Hoạt động hoàn hảo. Chúc mừng! – JohnC

+1

Heh awsome! Tôi yêu bộ xử lý ashx. Tôi đã sử dụng một để kéo hình ảnh từ một cơ sở dữ liệu hoạt động thực sự tốt. Tôi cũng thấy rằng nếu bạn làm một dịch vụ POX thì ashx hoạt động rất tốt. – JoshBerke

3

Phiên không có gì liên quan đến việc đăng nhập hay không.

Bạn sẽ ghi đè sự kiện nào khi muốn truy cập phiên? Phiên không khả dụng cho đến khi AcquireRequestState bị kích hoạt.

Để biết thêm thông tin, xem: http://msdn.microsoft.com/en-us/library/9ysfzy8h.aspx

+1

Phiên có mọi thứ để làm với nguyên tắc kinh doanh tùy chỉnh của tôi. Vấn đề nằm trong phiên đó là null chỉ cho một trang này, 50 hoặc hơn những người khác trong ứng dụng lớn này không thể hiện vấn đề này. Tôi truy cập Session từ Application_PostAuthenticateRequest nơi nó thường không phải là một vấn đề. – JohnC

+1

Vì lợi ích của vấn đề này, chỉ cần bỏ qua toàn bộ phần chính của doanh nghiệp, vấn đề cơ bản là Session là null chỉ cho một loại trang này. – JohnC

+0

Jon loại trang nào? Đây có phải là một aspx? hoặc ashx? – JoshBerke

0

có bạn là đúng Điều này xảy ra bởi vì các đối tượng conficts dependancy sức trong trường hợp song song trang transferance khác có thể phá vỡ các bức tường lửa giữa các phiên

8

trong Global.asax.cs session_start() và Session_End() bạn cần sử dụng "this.Session" !! Lý do cho điều này là HttpContext chỉ khả dụng khi có yêu cầu đang được xử lý. Đó là lý do tại sao bạn đang nhận được một NULL trên HttpContext.Current.Session!

Từ trang web của Microsoft: "Lớp HttpContext: Đóng gói tất cả thông tin HTTP cụ thể về yêu cầu HTTP riêng lẻ".

Nhưng đừng cảm thấy xấu ... tôi cũng đã rơi vào cái này! :)

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