ASP.NET Web API-Excel文件中的内容不可读

时间:2018-11-05 12:43:58

标签: c# excel asp.net-web-api download httpresponsemessage

我写了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.我添加了log语句以检查内容长度,并且在将其设置为响应时发现在两个服务器上都相同,但是在客户端却不同 2. ContentDisposition在发生故障的主机上被删除。 3.两台主机具有相同版本的OS,IIS 7.5和Windows Update

请告知可能是什么问题。自2周以来,我一直在寻找解决方案。

预先感谢

0 个答案:

没有答案