2013-11-03 17 views
11

Chúng tôi đã tìm ra cách để kích hoạt trạng thái phiên với WebAPI Sample hereWebAPI 2 thuộc tính định tuyến cho phép phiên bang

Bây giờ chúng ta có WebAPI 2 thuộc tính định tuyến, vì vậy chúng tôi không còn có đối tượng đường đến tiêm xử lý tùy chỉnh.

Có cách nào để bật trạng thái phiên với định tuyến thuộc tính không?

Trả lời

-2

Bạn có thể sử dụng lớp SessionStateUtility để nhận trạng thái phiên. Chỉ cần gọi:

var session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current) 

Bộ điều khiển Api được thiết kế cho các dịch vụ an toàn và nói chung là không trạng thái. Không tải phiên mỗi lần là một trong những điều làm cho chúng nhẹ hơn.

+0

doesn' t làm việc cho tôi, có được lỗi tham chiếu null !!! – RolandoCC

+1

@RolandoCC: Bạn sẽ cần phải viết 'System.Web.HttpContext.Current.SetSessionStateBehavior (System.Web.SessionState.SessionStateBehavior.Required);' dòng trong 'sự kiện Application_PostAuthorizeRequest' trong' global.asax'. [Kiểm tra câu trả lời ở đây] (http://stackoverflow.com/a/22491093/1951058) –

7

Bạn cần phải thêm này để global.asax

protected void Application_PostAuthorizeRequest() 
{ 
    System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required); 
} 

Sau đó, bạn có thể truy cập vào phiên giao dịch thông qua:

HttpContext.Current.Session 
+0

Tôi đã thử điều này nhưng có một lỗ hổng nghiêm trọng đối với phương pháp này: phiên không tồn tại tuy nhiên SessionID khác nhau cho mọi yêu cầu. – codinglifestyle

-1

trong global.asax

Private Sub WebApiApplication_PostAuthorizeRequest(sender As Object, e As EventArgs) Handles Me.PostAuthorizeRequest 
    System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required) 
End Sub 
Các vấn đề liên quan