私は、telerikのRadGridからExcel文書にデータをエクスポートするボタンを持っています。Excelにデータをエクスポートしようとするとエラーが発生します。
私はエクスポートしようとしたときしかし、私は次のようなエラーに遭遇しています:
[System.Threading.ThreadAbortException]:
{Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.}
は、ここに私のコードです:
private void GenerateFile(object structure, string fileName)
{
Workbook workbook = structure as Workbook;
var formatProvider = new XlsxFormatProvider();
try
{
using (MemoryTributary ms = new MemoryTributary())
{
Response.ClearHeaders();
Response.ClearContent();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
formatProvider.Export(workbook, ms);
ms.Position = 0;
ms.WriteTo(Response.OutputStream);
Response.End();
}
}
catch (System.OutOfMemoryException ex)
{
}
}
}
私は私がいることを、オンラインで見つけた記事に基づいて、次の解決方法を試してみました同じ問題を処理したが、いずれのソリューションもうまくいきませんでした。
- "Response.End()"を "HttpContext"に変更してください。 Current.ApplicationInstance.CompleteRequest()」
- 変更 "Response.Endの()" を "HttpContext.Current.Response.End()"
- 移動 "Response.Endの()" ついにブロック内。
- "Response.End()"をtry-catchスコープ外に移動します。
上記の解決方法のいずれも、この問題を解決していません。このエラーを解決する方法についてさらにアドバイスをいただければ幸いです。
ありがとうございました。
まず、catchブロックを削除します。例外が発生した場合は、調査して修正して、それを隠蔽しないようにしてください。第2に、 'Response.End'はすぐに処理を終了することを意味します。あなたは文字通りスレッドを中止するように依頼しました –
なぜ 'Response.End()'を使用していますか?それは必要ではありません –