Tôi có WCF DataService (v5.2) ghi đè OnStartProcessingRequest(ProcessRequestArgs args)
. Tôi muốn thêm một số tiêu đề để trả lời (trong phương pháp này mà tôi giả định là đúng nơi?). Lần đầu tiên tôi thử điều này:HttpContext vs. OperationContext trong DataService với tiêu đề HTTP
args.OperationContext.ResponseHeaders.Add(...)
Điều đó không hiệu quả. Sau đó tôi đã thử điều này:
OperationContext.Current.OutgoingMessageHeaders.Add(...)
Điều đó không hiệu quả. Tôi đã thử thêm một OperationContextScope mới trên sucker đó. Nó vẫn thất bại. Cuối cùng tôi đã thử điều này:
HttpContext.Current.Response.AddHeader(...);
Tùy chọn đó đã hoạt động! (Bởi "công việc" tôi có nghĩa là nó thực sự xuất hiện trong phản ứng với khách hàng.) Tại sao hai tùy chọn đầu tiên không hoạt động?
Sau khi đọc thêm trên web tôi phát hiện ra rằng
WebOperationContext.Current.OutgoingResponse.Headers.Add(...)
cũng làm việc. Tại sao chúng ta có bốn ngữ cảnh hiện tại bên trong phương pháp này? Làm thế nào là một người để biết cái nào để sử dụng (trong thời gian chạy)? Cái nào hợp lệ trong các phương thức [WebGet]
của tôi? Cái nào hợp lệ trong các phương thức [QueryInterceptor]
của tôi? Ngữ cảnh nào được đảm bảo để có các tiêu đề yêu cầu phù hợp? (Tôi đã sử dụng args.OperationContext cho rằng hiện nay.)