2017-03-10 3 views
1

Ich schreibe Daten in HTTP-Antwort unter Verwendung PushStreamContent Klasse. Ich muss einen geeigneten HTTP-Statuscode abrufen, der vom Ergebnis der onStreamAvailable Delegiertenausführung abhängt. Hier ein Beispielcode:HttpResponse - wie Statuscode festgelegt wird, hängt vom PushStreamContent-Ausführungsergebnis ab

[HttpGet] 
public HttpResponseMessage Get(int id) 
{ 
    try 
    { 
     HttpResponseMessage response = this.Request.CreateResponse(); 
     response.Content = new PushStreamContent((Stream outputStream, HttpContent content, TransportContext context) => 
     { 
      try 
      { 
       throw new Exception("Just an exception"); 

       response.StatusCode = HttpStatusCode.OK; 
      } 
      catch (Exception ex) 
      { 
       using (StreamWriter sw = new StreamWriter(outputStream)) 
       { 
        sw.WriteLine(ex.Message); 
        sw.Flush(); 
       } 

       response.StatusCode = HttpStatusCode.InternalServerError; 
      } 
     }); 

     return response; 
    } 
    catch (Exception ex) 
    { 
     return this.Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex); 
    } 
} 

Das obige Beispiel ruft immer den Statuscode 200 (Ok) ab. Wie kann ich es reparieren?

Antwort

1

Sie können es nicht in der PushStreamContent-Aktion beheben. Wenn Sie an dem Punkt angekommen sind, an dem Sie den Statuscode setzen, haben Sie bereits mit dem Senden der Antwort begonnen und somit bereits eine 200 gesendet. Dies ist ein Nachteil von PushStreamContent.

Verwandte Themen