Ich habe einen WCF DataService (v5.2), der OnStartProcessingRequest(ProcessRequestArgs args)
überschreibt. Ich möchte einige Header zur Antwort hinzufügen (in dieser Methode, die ich vermute, ist der richtige Ort?). Ich habe das zuerst versucht:HttpContext im Vergleich zu OperationContext in DataService mit HTTP-Headern
args.OperationContext.ResponseHeaders.Add(...)
Das hat nicht funktioniert. Ich habe dann folgendes versucht:
OperationContext.Current.OutgoingMessageHeaders.Add(...)
Das hat nicht funktioniert. Ich habe versucht, ein neues OperationContextScope auf diesem Sucker hinzuzufügen. Es ist immer noch fehlgeschlagen. Zuletzt versuchte ich das:
HttpContext.Current.Response.AddHeader(...);
Diese Option funktionierte! (Mit "Arbeit" meine ich, dass es tatsächlich in der Antwort auf den Kunden aufgetaucht ist.) Warum haben die ersten beiden Optionen nicht funktioniert?
Nach weiteren im Web zu lesen entdeckte ich, dass
WebOperationContext.Current.OutgoingResponse.Headers.Add(...)
funktioniert auch. Warum haben wir vier aktuelle Kontexte innerhalb dieser Methode? Wie kann eine Person wissen, welche (zur Laufzeit) zu verwenden ist? Welche sind in meiner [WebGet]
Methoden gültig? Welche sind in meiner [QueryInterceptor]
Methoden gültig? Welcher Kontext hat garantiert die richtigen Anforderungsheader? (Ich habe args.OperationContext dafür verwendet.)