ASP.Net ApiController如何替换Controller.Response

ASP.Net ApiController how replace Controller.Response

我有一个方法,它是用 ASP.net MVC Controller:

编写的
[HttpGet]
        public void ExportClientsListToCSV()
        {
            Response.Clear();
            Response.ClearHeaders();
            Response.ClearContent();
            Response.AddHeader("content-disposition", "attachment;filename=Exported_Contacts.csv");
            Response.ContentType = "text/csv";
            Response.ContentEncoding = Encoding.Unicode;
            Response.BinaryWrite(Encoding.Unicode.GetPreamble());
            StringWriter sw = new StringWriter();
            sw.WriteLine("\"FullName\",\"Position\",\"BranchOffice\",\"PrivateEmail\"");
            foreach (var line in db.Persons)
            {
                sw.WriteLine("\"{0}\",\"{1}\",\"{2}\",\"{3}\"",
                                           line.FullName,
                                           line.Position,
                                           line.BranchOffice,
                                           line.PrivateEmail);
            }
            Response.Write(sw.ToString());
            Response.End();
        }

我想在ApiController中使用它,但是在ApiController中没有成员Response.我该如何更换它?有 HttpResponseMessage,但我不能用它做同样的事情。
谢谢你的帮助!

下面的代码应该是等价的:

var sw = new StringWriter();
sw.WriteLine("\"FullName\",\"Position\",\"BranchOffice\",\"PrivateEmail\"");
foreach (var line in db.Persons)
{
    sw.WriteLine("\"{0}\",\"{1}\",\"{2}\",\"{3}\"",
        line.FullName,
        line.Position,
        line.BranchOffice,
        line.PrivateEmail);
}

return new HttpResponseMessage
{
    Content = new StringContent(sw.ToString(), Encoding.Unicode)
    {
        Headers =
        {
            ContentType = new MediaTypeHeaderValue("text/csv"),
            ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = "Exported_Contacts.csv"
            }
        }
    },
    StatusCode = HttpStatusCode.OK
};