1

我正在使用 httpresponsemessage 通过 Web API 显示文件。如果我使用内容处置类型附件,我没有问题。我被要求直接在浏览器中打开它们(处置类型附件)。我只是将类型更改为内联,并且在除 IE 之外的所有浏览器中一切正常。我在尝试使用 IE 时收到“Internet Explorer 遇到错误并需要关闭”错误。

这是我正在使用的代码

HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
        byte[] filebytes = null;

                using (FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
                {
                    filebytes = new byte[fs.Length];
                    fs.Read(filebytes, 0, filebytes.Length);
                }
            response.Headers.Clear();
            response.Content = new ByteArrayContent(filebytes);
            CacheControlHeaderValue cch = new CacheControlHeaderValue();
            cch.Private = true;
            response.Headers.CacheControl = cch;
            response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
            response.Content.Headers.ContentLength = filebytes.Length;
            ContentDispositionHeaderValue ch = new ContentDispositionHeaderValue("attachment");
            ch.FileName = "Document.pdf";
            response.Content.Headers.ContentDisposition = ch;


        return response;

我试过的:

  • 添加日期创建的标题
  • 使用流而不是字节数组
  • 删除私有缓存控制标头。我之所以添加这个,是因为我遇到的 Windows XP 机器不显示文件的问题。即使我完全删除了缓存控制标头,我仍然有问题。这不是问题。
  • 先清头,不先清头

有什么建议么?

4

0 回答 0