将文件附件从 Web API 转发到 MVC 控制器

Forward file attachment from Web API to MVC controller

我有一个 Web API return 是一个 csv 文件。如果我发出 GET 请求,例如通过。一个浏览器,我得到一个弹出窗口,询问在哪里下载 csv 文件:

HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);

result.Content = new StringContent(res);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
    FileName = "export_" + DateTime.Now + ".csv"
};
return ResponseMessage(result);

我试图在另一个 MVC 控制器和 return 相同的 csv 文件中调用此 API 端点。我该怎么做?

var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAPIEndpoint);
httpWebRequest.Method = "GET";

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

return httpResponse;

MVC 控制器中的响应(路由)通常为 ActionResult。您正在 returning 的 httpResponse 对象是一个 HttpWebResponse

您可能应该从 httpResponse 读取 csv 内容(使用 GetResponseStream),然后 return 使用适当的 MVC ActionResult 读取 csv 内容。