Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 打开流式Excel文档时避免受保护的视图_Asp.net_Excel_Office 2010 - Fatal编程技术网

Asp.net 打开流式Excel文档时避免受保护的视图

Asp.net 打开流式Excel文档时避免受保护的视图,asp.net,excel,office-2010,Asp.net,Excel,Office 2010,我们有一个ASP.NET应用程序,它使用Response.WriteFile动态生成Excel文档并将其流式传输到客户端,请参见下面的代码。请注意,一旦文件写入客户端,文档就会被删除。因此,服务器上永远不会留下任何文档 但是,我客户的用户现在都升级到了Office 2010,现在文档将在“受保护视图”中打开。要编辑文档,用户必须先单击“启用编辑”。这对于用户来说是不可接受的。 发生这种情况的原因是流式文档被放置在临时Internet文件中,这被认为是“潜在的不安全位置”。这些位置中的文档将在受保

我们有一个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();

如果可以从服务器上实现这一点,那么整个“受保护的视图”过程将毫无用处。这是一个客户端问题,因此任何解决方案都必须在那里实施(例如,我认为有可能将服务器添加到“受信任域”列表?)我在Excel的信任中心设置中没有看到“受信任域”选项。存在“受信任的位置”(但不可能将临时internet文件添加为受信任的位置)。这就是你的意思吗?对不起,是的,我指的是可信域-你可以尝试在那里添加域(而不是临时Internet文件位置,因为如果可能的话,这将适用于所有下载的文件)