【发布时间】:2019-01-14 15:28:37
【问题描述】:
我正在尝试在 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 类型,它就在那里。 我错过了什么吗??
【问题讨论】:
-
您返回的是响应而不是文件
-
是的,但这在 locahost 上按预期工作
-
我面临同样的问题。 @UttamUghareja,你找到解决方案了吗?
-
很遗憾,没有,我会尽快发布我的答案
标签: c# asp.net-mvc rest iis asp.net-web-api