HttpResponse - 如何设置状态代码取决于PushStreamContent执行结果

问题描述 投票:1回答:1

我使用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(确定)。我怎么解决它?

c# httpresponse http-response-codes pushstreamcontent
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.