【发布时间】:2017-02-02 19:15:38
【问题描述】:
我正在为 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;
}
}
另一个注意事项,下面的代码给出了错误“无法访问已处置的对象”。但确实摆脱了 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);在类级别的方法之外的行。为什么对象会在类级别而不是在方法内处理?
【问题讨论】:
-
在类级别使用它,您应该获得 CA2213,但显然存在一个限制,即如果您有一次性基类,CA2213 就不能很好地工作。看到今天别人问的这个问题:stackoverflow.com/questions/42032088/…
标签: c# asp.net .net asp.net-web-api dispose