【问题标题】:HttpResponse - how to set status code depends on PushStreamContent execution resultHttpResponse - 如何设置状态码取决于 PushStreamContent 执行结果
【发布时间】:2017-03-10 11:44:53
【问题描述】:

我使用PushStreamContent 类将数据写入http 响应。我需要检索适当的 HTTP 状态代码取决于 onStreamAvailable 委托执行的结果。这是一个示例代码:

[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);
    }
}

上面的示例总是检索状态代码 200(Ok)。我该如何解决?

【问题讨论】:

    标签: c# httpresponse http-response-codes pushstreamcontent


    【解决方案1】:

    您无法在 PushStreamContent 操作中修复它。当您设置状态码时,您已经开始发送响应,因此已经发送了 200。这是 PushStreamContent 的一个缺点。

    【讨论】:

      猜你喜欢
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 2019-03-25
      相关资源
      最近更新 更多