我的控制器中出现 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。