我正在为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;
}如果我按如下方式更改上述设置,则会出现“并非所有路径都返回值”错误,因为该函数返回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 HttpResponseMessage(HttpStatusCode.OK);行移到类级别的方法之外。为什么要在类级别而不是在方法中处理对象?
发布于 2017-02-03 04:19:50
您可以使用Request.CreateResponse,而不是使用新HttpResponseMessage的构造函数。看到这个被接受的答案有几个原因:When Use HttpResponseMessage and Request.CreateResponse
在使用这种方法时,我从未见过CA2000。
https://stackoverflow.com/questions/42010511
复制相似问题