Vâng, tôi nghĩ rằng tiêu đề là đủ rõ ràng.Sự khác nhau giữa HttpContext.Current.User và Thread.CurrentPrincipal trong asp.net là gì?
Trả lời
Sự khác biệt lớn nhất là chúng không nhất thiết phải giống nhau.
Nói chung, HttpContext.Current.User là người dùng đăng nhập trong khi Thread.CurrentPrincipal là nhận dạng quy trình công nhân.
Trên IIS 5.x, Thread.CurrentPrincipal theo mặc định là ASPNET. Trên IIS 6 trở lên, Thread.CurrentPrincipal theo mặc định là Network Service hoặc tài khoản pool ứng dụng.
Để làm cho nó phức tạp, nếu bạn kích hoạt tính năng mạo danh ASP.NET, thì cả hai sẽ giống như người dùng đăng nhập. :)
Cố gắng đọc một số cuốn sách thực sự tốt về chủ đề này và các bài viết Microsoft MSDN,
http://msdn.microsoft.com/en-us/library/ms998351.aspx
gợi ý khác là sử dụng một trình gỡ lỗi để đính kèm vào quá trình lao động và kiểm tra những khi chạy. Điều đó có thể cung cấp cho bạn một cái nhìn tốt hơn.
Một điểm khác biệt lớn là mã của bạn không phải lúc nào cũng có quyền truy cập vào HttpContext. (Ví dụ nếu bạn có tất cả BL của bạn trong một hội đồng có thể hoặc không được sử dụng từ một ứng dụng web) Trong khi hai tài khoản người dùng có thể khác nhau, nếu bạn sử dụng Thread.CurrentPrincipal thì mã của bạn sẽ luôn có thể nhận được tại đối tượng người dùng đó bất kể bạn đang ở đâu trong mã của mình.