ASP.NET Web API - нечитаемый контент в файле Excel - PullRequest
0 голосов
/ 05 ноября 2018

Я написал конечную точку REST, которая возвращает файл Excel. Ниже приведен фрагмент кода

 [HttpGet]
 public HttpResponseMessage GetExcel()
 {
    HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);

    var binPath = System.Web.Hosting.HostingEnvironment.MapPath("~/bin");

    var stream = new FileStream(binPath + "//MyTemplate.xlsx", FileMode.Open, FileAccess.Read);

    byte bytes = new byte[stream.length]
    stream.read(bytes, 0, stream.length);
    stream.close()

    response.Content = new BinaryContentArray(bytes);


    response.Content.Headers.ContentDisposition =
        new ContentDispositionHeaderValue("attachment") { FileName = "myfile.xlsx") };

    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    response.Content.Headers.ContentLength = memStream.Length;

    response.StatusCode = HttpStatusCode.OK;

    return response;        

 }

Это прекрасно работает на одном хосте. Excel загружается и открывается без ошибок. Но когда я развертываю тот же код на другом хосте, Excel загружается, но когда я пытаюсь открыть, я получаю сообщение об ошибке, в вашем Excel есть нечитаемый контент.

Несколько замечаний - 1. Длина содержимого увеличивается на хосте, на котором происходит сбой. (Оба хоста загружают один и тот же файл Excel) 2. Я добавил запись в журнал для проверки длины содержимого и обнаружил, что она одинакова на обоих серверах при настройке ответа, но на стороне клиента она отличается 2. ContentDisposition удаляется на хосте, где происходит сбой. 3. Оба хоста имеют одинаковую версию ОС, IIS 7.5 и обновление Windows

Пожалуйста, сообщите, в чем может быть проблема. Я ищу решение с 2 недель.

Заранее спасибо

...