Mam usługę danych WCF (wersja 5.2), która zastępuje OnStartProcessingRequest(ProcessRequestArgs args)
. Chcę dodać kilka nagłówków do odpowiedzi (w tej metodzie, którą zakładam, jest właściwe miejsce?). Najpierw wypróbowałem to:HttpContext kontra OperationContext w DataService z nagłówkami HTTP
args.OperationContext.ResponseHeaders.Add(...)
To nie zadziałało. Następnie wypróbowałem to:
OperationContext.Current.OutgoingMessageHeaders.Add(...)
To nie zadziałało. Próbowałem dodać nowy OperationContextScope na tym frajerze. Nadal nie udało się. W końcu próbowałem tego:
HttpContext.Current.Response.AddHeader(...);
Ta opcja zadziałała! (Przez "pracę" mam na myśli to, że faktycznie pojawił się w odpowiedzi na klienta). Dlaczego pierwsze dwie opcje nie zadziałały?
Po przeczytaniu dalej w internecie odkryłem, że
WebOperationContext.Current.OutgoingResponse.Headers.Add(...)
również działa. Dlaczego na ziemi mamy cztery bieżące konteksty w tej metodzie? W jaki sposób dana osoba może wiedzieć, której z nich użyć (w czasie wykonywania)? Które z nich są poprawne w moich metodach [WebGet]
? Które z nich są poprawne w moich metodach [QueryInterceptor]
? Który kontekst ma odpowiednie nagłówki żądań? (Do tej pory używałem args.OperationContext).