Web API 2、return 字符串作为文件

Web API 2, return string as a file

我有一个 Web API 2 POST 端点,它接受一个参数,查询数据库并 return 一个 xml 字符串作为响应。

public async Task<IHttpActionResult> Post(long groupId)
{
    People people = await _someService.GetPeople(groupId);
    XElement peopleXml = _xmlService.ConverToXml(people);
    return Ok(peopleXml);
}

如何将 return 文件改为 xml?

我自己想出来了,但我希望有更简单的方法 -

public async Task<IHttpActionResult> Post(long groupId)
{
    People people = await _someService.GetPeople(groupId);
    XElement peopleXml = _xmlService.ConverToXml(people);
    byte[] toBytes = Encoding.Unicode.GetBytes(peopleXml.ToString());

    var stream = new MemoryStream(toBytes);

    var result = new HttpResponseMessage(HttpStatusCode.OK)
    {
        Content = new StreamContent(stream)
    };
    result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
    {
        FileName = "test.txt"
    };
    result.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain");

    var response = ResponseMessage(result);
    return response;
}