5

Response.End()生成しThreadAbortExceptionます。

代わりに使用HttpContext.Current.ApplicationInstance.CompleteRequestしても問題は解決しません。

Response.Flush()では、代わりに使用できますかResponse.End()

4

3 に答える 3

11

Response.Flush()バッファにあるものはブラウザに送信されますが、ページの処理は停止されないため、次のステップの実行が続行されます。

何をResponse.End()するかは、asp.net Page Life Cycle の次の関数呼び出しで実行ステップを停止することですhttp://msdn.microsoft.com/en-us/library/ms178472.aspx

そのため、一連の呼び出しのループから抜け出すために、例外をスローする必要があります。

1 つの代替手段は、Response.Close()これも実行ステップを停止することではなく、ブラウザとの接続を閉じた後に何かを送信しようとすると、おそらく他のエラーが発生する可能性があります。そうしないResponse.Close()Flush()、ブラウザが予測できないデータを取得します。

あなたも読むことができます:endResponseをtrue VS CompleteRequestおよびセキュリティスレッドでページにリダイレクトします

于 2012-05-31T07:41:51.093 に答える
4

ファイルをダウンロードする前に条件を使用Response.IsClientConnected-

if (Response.IsClientConnected)
 {
    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();
    Response.ContentType = "Application/pdf";
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
    Response.TransmitFile(Server.MapPath(@"yourpath" + fileName));
    Response.Flush();
    Response.Close();
  }

多くの苦労の末、うまく機能しています。それがあなたにとってもうまくいくことを願っています。

于 2013-06-11T07:12:01.003 に答える