【问题标题】:Why does response code return a different code?为什么响应代码返回不同的代码?
【发布时间】:2016-07-13 18:19:22
【问题描述】:

在 WebAPI 应用程序中,我抛出异常,并被捕获。然后我这样做:

catch (Exception e)
{
  return Request.CreateResponse(HttpstatusCode.BadRequest);
}

在调用方,消息是预期的状态码 400。

当我这样做时:

catch (Exception e)
{
  return Request.CreateResponse(HttpstatusCode.BadRequest, myFile);
}

如果myFileHttpPostedFile,调用者会得到一个 500 代码。 HttpstatusCode.BadRequest == 400。在第二种情况下,调用者如何获得 500?

【问题讨论】:

  • myFile 变量的类型是 HttpPostedFile?试试这个new StreamReader(myFile.InputStream).ReadToEnd();,而不是只传入 myFile 作为第二个参数。
  • 该行执行,但内容当然是乱码。
  • 你能发布实际文件和乱码响应吗?
  • 我无法发布实际文件,因为它包含敏感信息。我确定响应只是二进制的。
  • 猜测:400 返回码不允许“内容”,因此您会遇到异常 - 报告为 500 状态。

标签: c# .net asp.net-web-api httpresponsemessage


【解决方案1】:

而不是 CreateResponse: 使用:=> 只分配 Response.StatusCode=StatusCodes.Status400BadRequest; 这将自动返回状态 400。 将以下对象返回为 return new HttpStatusCodeResult(StatusCodes.Status400BadRequest);

【讨论】:

  • “仅分配”在哪里?
  • 在控制器的方法中
  • 只需将值分配给 Response.Statuscode 属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 2012-12-17
  • 2019-10-12
  • 2015-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多