1

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();
4

0 に答える 0