Tôi vừa mới gặp sự cố khi chạy ứng dụng web asp.net trong studio trực quan 2008. Tôi nhận được lỗi 'loại không được giải quyết cho thành viên ... customUserPrincipal'. Theo dõi các nhóm thảo luận khác nhau có vẻ như có một vấn đề với máy chủ web của Visual Studio khi bạn gán một hiệu trưởng tùy chỉnh với Thread.CurrentPrincipal.sự khác biệt giữa http.context.user và thread.currentprincipal và khi nào nên sử dụng chúng?
Trong mã của tôi, bây giờ tôi sử dụng ...
HttpContext.Current.User = myCustomPrincipal
//Thread.CurrentPrincipal = myCustomPrincipal
Tôi rất vui vì tôi đã nhận lỗi ra khỏi con đường, nhưng nó đặt ra câu hỏi "sự khác biệt giữa hai phương pháp này là gì đặt hiệu trưởng? ". Có stackoverflow khác questions liên quan đến sự khác biệt nhưng họ không nhận được vào các chi tiết của hai phương pháp tiếp cận.
Tôi đã tìm thấy một bài trêu ngươi mà đã có những nhận xét hoành tráng sau nhưng không có lời giải thích để sao lưu khẳng định mình ...
Sử dụng HttpConext.Current.User cho tất cả web (/ ASMX ASPX) ứng dụng.
Sử dụng chủ đề.CurrentPrincipal cho tất cả các ứng dụng khác như winForms, bàn điều khiển và cửa sổ dịch vụ ứng dụng.
Có thể bất kỳ người trong số các chuyên gia bảo mật/dot.net đưa ra một số ánh sáng về chủ đề này không?
Dựa trên thử nghiệm cục bộ của tôi với IIS 7.5 .NET 4.5, câu trả lời này là sai và câu trả lời của @ womp là chính xác. Theo mặc định, Thread.CurrentPrincipal và HttpContext.Current.User đều trả về ứng dụng/người dùng web. System.Security.Principal.WindowsIdentity.GetCurrent() và Environment.UserDomainName + Environment.UserName cả hai đều trả về bản thân tiến trình IIS Application Pool/worker. – BateTech
Tôi tự hỏi nếu điều này thay đổi kể từ khi câu trả lời này được viết cách đây 4,5 năm, nếu có lẽ @yamspog có thể gắn nhãn lại câu trả lời khác là câu trả lời được chấp nhận. – Aren