我写了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周以来,我一直在寻找解决方案。
预先感谢