0

ページ上のリンクからCSVを生成し、ユーザーに送り返しています。ページのコンテキストを維持したいと思います。このコードは、2008 DevボックスのIE、Chrome、Firefoxで問題なく機能しますが、Vista、Win 7、またはWin 8で実行すると、ファイルにページのHTMLが追加されます。

私はファイルを配信する方法についてかなり読んで、response.flush()が最善の方法であると結論付けました。

        // Convert to Bytes for Binary Write
        Byte[] bytes = Utils.Instance.ReadStreamToByte(streamWriter.BaseStream);

        // Call ContentType followed by clear so no extraneous content is sent. see http://msdn.microsoft.com/en-us/library/system.web.httpresponse.aspx
        HttpContext.Current.Response.ContentType = "text/csv";
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.AppendHeader("content-length", bytes.Length.ToString());
        HttpContext.Current.Response.AppendHeader("content-Disposition", "attachment;filename=" + "MyAccount Sales Report " + MonthDDL.SelectedItem.Text + "-" + YearDDL.SelectedItem.Text + ".csv");
        HttpContext.Current.Response.BinaryWrite(bytes);
        HttpContext.Current.Response.Flush();

私はこれが発生している理由を検索しましたが、関連するヘルプはまだ見つかりません。Clear()の位置を変更しました。上記のコメントに記載されているMicrosoftの記事によると、これは影響を及ぼしませんでした。

4

1 に答える 1

0

フラッシュの後に Response.End() を追加しましたが、イベント後のページの操作に悪影響はないようです。Server 2008 の動作が異なる理由は、まだ少し謎です!

于 2013-03-24T23:54:07.237 に答える