我们有一个 ASP.NET 应用程序,它使用 Response.WriteFile 动态生成 Excel 文档并将它们流式传输到客户端,请参见下面的代码。请注意,一旦将文件写入客户端,该文件就会被删除。因此,服务器上不会留下任何文档。
但是,我客户的用户现在已经全部升级到 Office 2010,现在文档将在“受保护的视图”中打开。为了编辑文档,用户必须首先单击“启用编辑”。这对于用户来说被认为是不可接受的。发生这种情况的原因是流文档被放置在 Internet 临时文件中,这被认为是“潜在的不安全位置”。并且这些位置的文档在受保护的视图中打开。我只是希望有一些方法可以解决这个问题。
从理论上讲,我可以将文档放在客户端可以访问的文件夹中,然后重定向到文档。但是,此解决方案不是一种选择。首先,由于文档将留在服务器上,其他用户可以访问它,这是一个问题,因为文档可能包含机密数据。这不是一个可行的选择还有其他原因。
另一个理论上的解决方法是要求所有用户禁用设置“为位于潜在不安全位置的文件启用受保护的视图”。当然,这也不是一个选择。
所以,简而言之,在使用下面描述的流技术时,是否有办法避免在“受保护的视图”中打开文档?
Response.Buffer = true;
Response.Clear();
Response.AddHeader("Pragma", "no-cache");
Response.Expires = 0;
Response.AddHeader("Content-Type", contentType);
Response.AddHeader("Content-Disposition", "attachment; filename=" + proposedFilename);
Response.WriteFile(dstFullPathName);
Response.Flush();
Response.Close();
File.Delete(dstFullPathName);
HttpContext.Current.ApplicationInstance.CompleteRequest();