この種の質問が多くのフォーラムで何度も聞かれることは知っていますが、この問題をより奇妙にしているのは、ローカルとサーバーの両方で 1 つのモジュールでは機能するが、別のモジュールでは機能しないことです。
もっとはっきりさせてください。
次のコードを使用してCSなど、1つのモジュールのExcelシートをエクスポートしています
public void ExportToExcel(string fileName, GridView gv)
{
try
{
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment;filename={0}.xls", fileName));
HttpContext.Current.Response.ContentType = "application/excel";
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
HttpContext.Current.Response.Write(sw.ToString());
HttpContext.Current.Response.End();
}
catch (Exception ex)
{
}
}
同じコードを持つ小売業者など、別のリストをエクスポートします。ローカルでデバッグしましたが、2 番目のモジュールでは例外が発生していました
ThreadAbortException
ただし、レコードリストは 1 つです。
ここで提案されているように、使用しHttpContext.Current.ApplicationInstance.CompleteRequest
ましたが、予期しない結果が得られました(ページ全体がエクスポートされます)