エラーを返すResponse.End()

私のアプリケーションでは、ファイルをダウンロードする必要があるので、このコードを使用しています:

 Response.ContentType = "application/octet-stream";                    
 Response.AppendHeader("Content-Disposition", "attachment; filename =" + strFileName + ".xls");
 Response.TransmitFile(strFilePath);
 Response.End();

at Response.End() i am getting an error ThreadAbortException

このエラーに私はhttpApplication.CompleteRequest()を使用しようとしています。 しかし私もこれを使うことはできません。

httpApplication.CompleteRequest()のコードは以下のとおりですが、

Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename =" + strFileName + ".xls");
Response.TransmitFile(strFilePath);
HttpApplication.CompleteRequest();

HttpApplication.CompleteRequest()を使用してこのエラーが発生する

An object reference is required for the non-static field, method, or property 'System.Web.HttpApplication.CompleteRequest()'

私は私の疑いを明確にすることができると願っています... 私を助けて....

2
ThreadAbortException のメッセージは何ですか?
追加された 著者 Dan Puzey,
ThreadAbortException のメッセージは何ですか?
追加された 著者 Dan Puzey,
aspxページから提供する代わりに汎用ハンドラ(.ashxファイル)を使用してファイルを提供することができます。
追加された 著者 user1429080,
aspxページから提供する代わりに汎用ハンドラ(.ashxファイル)を使用してファイルを提供することができます。
追加された 著者 user1429080,
これはエラーです "コードが最適化されているため、またはネイティブフレームが呼び出しスタックの上にあるため式を評価できません"
追加された 著者 salah9,
これはエラーです "コードが最適化されているため、またはネイティブフレームが呼び出しスタックの上にあるため式を評価できません"
追加された 著者 salah9,

12 答え

Response.End() is expected to throw a ThreadAbortException.
This is by design, so that the rest of the page response is not processed.

この例外を取得することは大丈夫です。ページがさらに処理されないようにします。

Refer: HttpResponse.End

CompleteRequestメソッドは例外を発生させず、コードを   CompleteRequestメソッドの呼び出しが実行される可能性があります。もしあなたの   意図は後続のコードの実行を避けることであり、   Endのパフォーマンスペナルティは許容されます。   CompleteRequest。

6
追加された

Response.End() is expected to throw a ThreadAbortException.
This is by design, so that the rest of the page response is not processed.

この例外を取得することは大丈夫です。ページがさらに処理されないようにします。

Refer: HttpResponse.End

CompleteRequestメソッドは例外を発生させず、コードを   CompleteRequestメソッドの呼び出しが実行される可能性があります。もしあなたの   意図は後続のコードの実行を避けることであり、   Endのパフォーマンスペナルティは許容されます。   CompleteRequest。

6
追加された

このコードを試してください:

Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename =" + strFileName + ".xls");
Response.TransmitFile(strFilePath);
HttpContext.Current.ApplicationInstance.CompleteRequest();
3
追加された

このコードを試してください:

Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename =" + strFileName + ".xls");
Response.TransmitFile(strFilePath);
HttpContext.Current.ApplicationInstance.CompleteRequest();
3
追加された

この行をコメントしてみるとよいです:

//Response.End();

それは私のために働いた:)

0
追加された

この行をコメントしてみるとよいです:

//Response.End();

それは私のために働いた:)

0
追加された

ASP更新パネルまたはJavaScriptを使用するコントロールを使用しているため、エラーが発生します。 JavaScriptやScriptManagerやスクリプティングなしで、ASPやHTMLからネイティブのコントロールを使用してみてください。

0
追加された

ASP更新パネルまたはJavaScriptを使用するコントロールを使用しているため、エラーが発生します。 JavaScriptやScriptManagerやスクリプティングなしで、ASPやHTMLからネイティブのコントロールを使用してみてください。

0
追加された

ASP更新パネルまたはJavaScriptを使用するコントロールを使用しているため、エラーが発生します。 JavaScriptやScriptManagerやスクリプティングなしで、ASPやHTMLからネイティブのコントロールを使用してみてください。

0
追加された

私はこの問題を経験し、次のコードで解決しました

ScriptManager sm = ScriptManager.GetCurrent(this.Page);
              sm.RegisterPostBackControl(this.grid);
0
追加された

私はこの問題を経験し、次のコードで解決しました

ScriptManager sm = ScriptManager.GetCurrent(this.Page);
              sm.RegisterPostBackControl(this.grid);
0
追加された

私はこの問題を経験し、次のコードで解決しました

ScriptManager sm = ScriptManager.GetCurrent(this.Page);
              sm.RegisterPostBackControl(this.grid);
0
追加された