次のコードを使用して、ユーザーにファイルをダウンロードさせています。正常に動作しますが、エラーも生成され、エラーの原因は次のとおりですResponse.End();
エラー メッセージ:コードが最適化されているか、ネイティブ フレームがコール スタックの一番上にあるため、式を評価できません。
以下は私のコードです。このエラーを処理するにはどうすればよいですか。また、このエラーがリソースを解放していないため、メモリが不要に使用される可能性があります。
これをasp.net Webフォームアプリケーションに使用します。
try
{
string fileName = Request["file_ID"];
string path = Server.MapPath("~/App_Data/uploads/"+fileName);
//string = Server.MapPath(strRequest);
System.IO.FileInfo file = new System.IO.FileInfo(path);
if (file.Exists)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/"+file.Extension;
Response.WriteFile(file.FullName);
Response.End();
// System.Threading.Thread.Sleep(2000);
// Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", "alert('aa')", true);
}
else
{
//Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", "myWindow.close();", true);
}
}
catch (Exception rt)
{
Response.Write(rt.Message);
}
}
このソリューションを検討していましたが、コードに実装する方法がわかりません。
アップデート:
私は実際に、ユーザーがファイルをダウンロードして、現在コードでコメントされているコード ビハインド スクリプトを使用して同じように閉じることを望んでいます。
したがって、このコードをより適切に最適化して、respond.end ステートメントによって生成された例外を処理する方法がわかりません。
使ってみましPage.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", "myWindow.close();", true);
たが、どちらもうまくいきません。
ありがとう