Response.WriteFileを使用してExcelドキュメントを動的に生成し、クライアントにストリーミングするASP.NETアプリケーションがあります。以下のコードを参照してください。ファイルがクライアントに書き込まれると、ドキュメントは削除されることに注意してください。したがって、サーバーにドキュメントが残されることはありません。
ただし、クライアントのユーザーはすべてOffice 2010にアップグレードされ、ドキュメントは「保護されたビュー」で開きます。ドキュメントを編集するには、ユーザーは最初に[編集を有効にする]をクリックする必要があります。これは、ユーザーには受け入れられないと見なされます。これが発生する理由は、ストリーミングされたドキュメントがインターネット一時ファイルに配置され、これが「潜在的に危険な場所」と見なされるためです。そして、そのような場所にあるドキュメントは、保護されたビューで開かれます。これを回避する方法があることを願っています。
理論的には、クライアントからアクセスできるフォルダーにドキュメントを配置し、ドキュメントにリダイレクトすることができます。ただし、このソリューションはオプションではありません。まず、ドキュメントはサーバーに残されるため、他のユーザーがアクセスできる可能性があります。これは、ドキュメントに機密データが含まれている可能性があるため、問題になります。これがバイアル可能なオプションではない理由は他にもあります。
他の理論的な回避策は、すべてのユーザーに「安全でない可能性のある場所にあるファイルの保護されたビューを有効にする」設定を無効にするように依頼することです。当然、これもオプションではありません。
つまり、以下で説明するストリーミング手法を使用しているときに、ドキュメントが「保護されたビュー」で開かれるのを回避する方法はありますか?
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();