Tôi có một vài dự án ASP.Net MVC và WebAPI. Hầu hết chúng được cập nhật (MVC 5/WebAPI 2). Tôi đã kiểm tra lại các giả định bảo mật của mình vì tôi đang triển khai một bộ lọc toàn cục (cho MVC) và một trình xử lý ủy nhiệm (cho WebAPI) để thống nhất bảo mật trên toàn hệ thống.ASP.Net vs MVC vs WebAPI và UseTaskFriendlySynchronizationContext
Trong ngữ cảnh đó, tôi đã xem qua một số bài viết và bài đăng (xem bên dưới) cho biết bạn luôn phải đặt UseTaskFriendlySynchronizationContext
thành true
(mặc định là false
). Điều này có vẻ kỳ lạ với tôi như ngay cả trong VS2013 bằng cách sử dụng MVC 5 và WebAPI 2 mẫu dự án mới (cũng như mẫu ASP.Net WebForms) không thiết lập cài đặt ứng dụng này cả.
Tài liệu MSDN về cài đặt này thực tế không tồn tại và các bài đăng tôi đã tìm thấy có nghĩa là cần thiết cho lập trình không đồng bộ dường như trong ngữ cảnh của WebForms.
Vì vậy, đây là những câu hỏi của tôi:
- Có thiết lập này áp dụng đối với tất cả mọi thứ ASP.Net hoặc là nó đặc trưng cho những thứ trang vòng đời trong ASP.Net (mà tôi đã không được sử dụng nhiều)
- Nếu nó là rất quan trọng cho lập trình async hiện đại, tại sao không có bất kỳ hướng dẫn hoặc các mẫu tham khảo nó?
- Có sử dụng các yêu cầu của Thread.CurrentPrincipal trong một thư viện tham chiếu có sử dụng ConfigureAwait (false) đặt ra bất kỳ vấn đề nào hoặc liệu luồng ngữ cảnh logic hợp lý của ExecutionContext có quan tâm đến tôi không? (Đọc và thử nghiệm của tôi cho đến nay chỉ ra rằng nó sẽ)
Dưới đây là một số trong những điều tôi đã nhìn thấy liên quan đến UseTaskFriendlySynchronizationContext
:
- Set Thread.CurrentPrincipal Asynchronously?
- ASP.NET appSettings Element on MSDN
- What's the meaning of "UseTaskFriendlySynchronizationContext"?
- Understanding the
SynchronizationContext
in ASP.NET by Marcus van Houdt - Why is an "await Task.Yield()" required for Thread.CurrentPrincipal to flow correctly?
Một số bài viết đó thực sự đã giúp tôi có được một nắm về cách tất cả các công cụ này làm việc mà không bao giờ đề cập đến UseTaskFriendlySynchronizationContext
:
- ExecutionContext vs SynchronizationContext by Stephen Toub
- It's All About the SynchronizationContext by Stephen Cleary
Tôi đã lấy # 3 vào câu hỏi riêng của mình bằng một số mã mẫu nhanh. Nếu bạn có một cơ hội để nhìn vào điều đó tôi thực sự sẽ đánh giá cao nó! ([Bảo mật, Thread.CurrentPrincipal và ConfigureAwait (sai)] (http://stackoverflow.com/questions/20479888/security-thread-currentprincipal-and-configureawaitfalse)) –