#c# #asp.net #vue.js #iis-8
#c# #asp.net #vue.js #iis-8
Вопрос:
У меня есть веб-приложение, которое размещается на IIS 8. Он использует VueJS и ASP.NET Веб-API. Он имеет возможность экспортировать таблицу в Excel, которая работает в нашей тестовой среде, но не работает в нашей производственной среде. В ТЕСТЕ, когда пользователь нажимает на кнопку экспорта в Excel, это позволяет пользователю загрузить документ XLSX в веб-браузере. Но в рабочей среде он возвращает JSON.
Вот код, который я использую для потоковой передачи файла:
var appRoot = HttpContext.Current.Server.MapPath("~/");
var savePath = string.Format("{0}\Temporary_Files\{1}.xlsx", appRoot, Guid.NewGuid());
workbook.SaveAs(savePath);
HttpResponseMessage document = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new FileStream(savePath, FileMode.Open);
document.Content = new StreamContent(stream);
document.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
document.Content.Headers.ContentDisposition.FileName = "Export.xlsx";
document.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
document.Content.Headers.ContentLength = stream.Length;
return document;
Вот ответ в ТЕСТЕ:
ЗАГОЛОВКИ ОТВЕТОВ
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 7713
Content-Type: application/octet-stream
Expires: -1
Server: Microsoft-IIS/8.5
Content-Disposition: attachment; filename=Export.xlsx
X-AspNet-Version: 4.0.30319
Persistent-Auth: true
X-Powered-By: ASP.NET
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
Access-Control-Allow-Methods: POST,GET,OPTIONS,PUT,DELETE
Date: Fri, 04 Dec 2020 17:50:54 GMT
Вот ответ в процессе производства:
ЗАГОЛОВКИ ОТВЕТОВ
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
Persistent-Auth: true
X-Powered-By: ASP.NET
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
Access-Control-Allow-Methods: POST,GET,OPTIONS,PUT,DELETE
Date: Fri, 04 Dec 2020 17:45:02 GMT
Content-Length: 373
ТЕЛО ОТВЕТА
{"Version":{"_Major":1,"_Minor":1,"_Build":-1,"_Revision":-1},"Content":{"Headers":[{"Key":"Content-Disposition","Value":["attachment; filename=Export.xlsx"]},{"Key":"Content-Type","Value":["application/octet-stream"]},{"Key":"Content-Length","Value":["7497"]}]},"StatusCode":200,"ReasonPhrase":"OK","Headers":[],"RequestMessage":null,"IsSuccessStatusCode":true}
Комментарии:
1. Согласно предоставленному вами коду, я протестировал его, но проблем не было. Я думаю, что это может быть проблема с путем. Файл xlsx не был найден правильно в IIS. Вы можете попробовать использовать абсолютный путь для чтения xlsx, чтобы узнать, есть ли проблема.
Ответ №1:
Вы можете попробовать мой способ:
return File(bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
reportFilename "." extension)