私は ASP.NET (2.0) で作業しており、ユーザーが一連のファイルを選択して zip としてダウンロードできるページがあります。DotNetZipライブラリを使用して、元に戻すのに苦労することなくこれを機能させました(おそらく問題には関係ありませんが、完全を期すために含まれています)。
ユーザーがダウンロードするファイルを確認した後、ページはポストバックを実行し、ボタン クリック イベント ハンドラーで次のコードを使用します。
Response.Clear();
Response.BufferOutput = false; // false = stream immediately
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "filename=FileRequest.zip");
using (ZipFile zip = new ZipFile())
{
zip.AddFile(MapPath("/datafiles/fileToZip.pdf"), "");
zip.Save(Response.OutputStream);
}
Response.Close();
そして、これはすべてうまくいくようです。ユーザーがボタンをクリックすると、ダウンロード ウィンドウがポップアップし、ユーザーは zip をダウンロードします。すべてが良いです...
...ページで何か他のことをしたいと決めるまで。フォームのボタンが反応しなくなりました。たとえば、もう一度ダウンロード ボタンをクリックしても何も起こりません。ページをリロードすると、この動作を繰り返すことができます...一度機能すると、何もしなくなります。
ブラウザが新しいリクエストを送信しない理由がわかりません。「回転」したり、忙しくしたりしているわけではありません。これはブラウザの問題かと思いましたが、IEでもFirefoxでも同じことを繰り返していたので、私の理解不足のようです。奇妙なことに、応答していないように見えるのはフォーム送信要素だけです。Javascript は引き続き機能し、通常のリンクも機能します。
では、なぜこれが起こっているのでしょうか。どうすれば回避できますか?