2013-02-11 2 views
6

Trong ASP.NET WebApi được lưu trữ trong IIS 7, nó có quyền truy cập vào phiên không? Nó xuất hiện Session là null trên HttpContext.Current.Phiên WebApi ASP.NET và Biến tĩnh

Sự khác nhau giữa hai loại này để lưu trữ biến toàn cầu là gì?

private static Dictionary<string, string> ConnectionStrings 
    { 
     get 
     { 
      if (HttpContext.Current.Session["ConnectionStrings"] == null) 
       HttpContext.Current.Session["ConnectionStrings"] = new Dictionary<string, string>(); 

      return HttpContext.Current.Session["ConnectionStrings"] as Dictionary<string, string>; 
     } 
    } 

private static Dictionary<string, string> connectionStrings = new Dictionary<string, string>(); 

Tôi có nên sử dụng phiên hoặc các biến tĩnh để lưu trữ các chuỗi kết nối được tự động tạo ra (câu chuyện dài)?

Trả lời

6

Vâng, biến phiên có nghĩa là cho mỗi người dùng. Biến tĩnh là biến sẽ được chia sẻ giữa tất cả người dùng. Vì vậy, tôi không có ý tưởng tại sao sẽ lưu trữ một chuỗi kết nối cho mỗi người dùng, nhưng nếu bạn cần làm điều đó, bạn không thể sử dụng một biến tĩnh. Bây giờ, bạn có thể sử dụng một biến tĩnh và biến nó thành một từ điển, trong đó khóa là người dùng và giá trị là bất cứ thứ gì bạn muốn lưu trữ. Điều đó chắc chắn sẽ hoạt động.

Có nói tất cả điều đó, bạn có thể bắt chước phiên sử dụng cookie (cuối cùng là phiên nào sử dụng anyway (thường)): Xem: Accessing Session Using ASP.NET Web API