我的控制器中出现 CA2000 警告
CA2000 Warning in my controller
我正在为 SPA 应用开发 Web API。我想弄清楚如何消除我的一个控制器中的 CA2000 警告。以下代码生成 CA2000 警告-
[Route("Execution/TestCaseOrExecutionExcelExport")]
[HttpPost]
public HttpResponseMessage GetTestCaseOrExecutionExcelExport([FromBody] dynamic data)
{
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
using (result)
{
...
result.Headers.AcceptRanges.Add("bytes");
result.Content = new ByteArrayContent(bytes);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = filename };
}
return result;
}
如果我按如下方式更改上面的内容,我会收到 "Not all paths return a value" 错误,因为函数 returns HttpResponseMessage-
[Route("Execution/TestCaseOrExecutionExcelExport")]
[HttpPost]
public HttpResponseMessage GetTestCaseOrExecutionExcelExport([FromBody] dynamic data)
{
using (HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK))
{
...
return result;
}
}
另一个注意事项,下面的代码给出了错误 "Cannot access a disposed object." 但确实摆脱了 ca2000 警告-
[Route("Execution/TestCaseOrExecutionExcelExport")]
[HttpPost]
public HttpResponseMessage GetTestCaseOrExecutionExcelExport([FromBody] dynamic data)
{
using (result = new HttpResponseMessage(HttpStatusCode.OK))
{
...
}
return result;
}
尝试运气不佳。
我如何编写代码以消除 CA2000 警告?
**更新:解决了这个问题,只是不确定为什么我所做的解决了我的问题。我唯一做的就是移动 HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); class 级别的方法之外的行。为什么要在 class 级别而不是在方法内处理该对象?
您可以使用 Request.CreateResponse 而不是使用新 HttpResponseMessage 的构造函数。由于某些原因,请参阅此已接受的答案:
使用这种方法时我从未见过 CA2000。
我正在为 SPA 应用开发 Web API。我想弄清楚如何消除我的一个控制器中的 CA2000 警告。以下代码生成 CA2000 警告-
[Route("Execution/TestCaseOrExecutionExcelExport")]
[HttpPost]
public HttpResponseMessage GetTestCaseOrExecutionExcelExport([FromBody] dynamic data)
{
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
using (result)
{
...
result.Headers.AcceptRanges.Add("bytes");
result.Content = new ByteArrayContent(bytes);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = filename };
}
return result;
}
如果我按如下方式更改上面的内容,我会收到 "Not all paths return a value" 错误,因为函数 returns HttpResponseMessage-
[Route("Execution/TestCaseOrExecutionExcelExport")]
[HttpPost]
public HttpResponseMessage GetTestCaseOrExecutionExcelExport([FromBody] dynamic data)
{
using (HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK))
{
...
return result;
}
}
另一个注意事项,下面的代码给出了错误 "Cannot access a disposed object." 但确实摆脱了 ca2000 警告-
[Route("Execution/TestCaseOrExecutionExcelExport")]
[HttpPost]
public HttpResponseMessage GetTestCaseOrExecutionExcelExport([FromBody] dynamic data)
{
using (result = new HttpResponseMessage(HttpStatusCode.OK))
{
...
}
return result;
}
尝试运气不佳。
我如何编写代码以消除 CA2000 警告?
**更新:解决了这个问题,只是不确定为什么我所做的解决了我的问题。我唯一做的就是移动 HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); class 级别的方法之外的行。为什么要在 class 级别而不是在方法内处理该对象?
您可以使用 Request.CreateResponse 而不是使用新 HttpResponseMessage 的构造函数。由于某些原因,请参阅此已接受的答案:
使用这种方法时我从未见过 CA2000。