我正在尝试在ASP.NET Web API中下载CSV文件。以下是我的代码,它在本地环境中可以工作。
[Route("{name?}")]
public HttpResponseMessage Get(string name = "DownloadFile")
{
name = name.EndsWith(".csv") ? name : $"{name}.csv";
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.Write("Hello, World!");
writer.Flush();
stream.Position = 0;
var result = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ByteArrayContent(stream.ToArray())
};
result.Content.Headers.Add("x-filename", name);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = name
};
return result;
}
该文件正在本地浏览器中下载。
我在服务器上部署了相同的代码,但在浏览器中返回 JSON 而不是下载文件。
JSON 如下所示:
{
"version": {
"major": 1,
"minor": 1,
"build": -1,
"revision": -1,
"majorRevision": -1,
"minorRevision": -1
},
"content": {
"headers": [
{
"key": "x-filename",
"value": [
"test.csv"
]
},
{
"key": "Content-Type",
"value": [
"application/octet-stream"
]
},
{
"key": "Content-Disposition",
"value": [
"attachment; filename=test.csv"
]
}
]
},
"statusCode": 200,
"reasonPhrase": "OK",
"headers": [],
"requestMessage": null,
"isSuccessStatusCode": true
}
我已经在IIS中检查了MIME类型,它是存在的。 有什么我漏掉的吗??