C# 响应。结束导致System.Threading.ThreadAbortException
我在button_Click()方法中有一个try catch,我使用EPPlus将一些数据保存到Excel电子表格中C# 响应。结束导致System.Threading.ThreadAbortException,c#,asp.net,response,epplus,C#,Asp.net,Response,Epplus,我在button_Click()方法中有一个try catch,我使用EPPlus将一些数据保存到Excel电子表格中 try { .... Some calculations here... //Create Excel output. Response.Clear(); Response.ContentType = "application/vnd.openxmlformats-officedocument.sprea
try
{
.... Some calculations here...
//Create Excel output.
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=Report " +
DateTime.Today.Day.ToString() + "-" + DateTime.Today.Month.ToString() + "-" +
DateTime.Today.Year.ToString() + " " + DateTime.Now.Hour + "-" +
DateTime.Now.Minute + "-" + DateTime.Now.Second + ".xlsx");
package.SaveAs(Response.OutputStream);
Response.End();
}
cach()
{
LogException();
}
我得到一个错误System.Threading.ThreadAbortException,这是因为上面的Response.End()导致的,我得到了
真正令人恼火的是,尽管在我的开发机器上,它仍然输出文件,但当我将网站放在服务器上时,它会记录错误,页面会无限加载,并且从不输出文件
有人知道哪里出了问题吗?只要抓住
ThreadAbortException
什么都不做就行了。您可以安全地忽略此异常
编辑:
清除日志,或添加一个检查以不登录ThreadAbortException
catch(Exception ex){
if (ex is System.Threading.ThreadAbortException)
{
//do nothing
return;
}else{
LogException(ex);
}
}
只需捕获
ThreadAbortException
,什么也不做。您可以安全地忽略此异常
编辑:
清除日志,或添加一个检查以不登录ThreadAbortException
catch(Exception ex){
if (ex is System.Threading.ThreadAbortException)
{
//do nothing
return;
}else{
LogException(ex);
}
}
当Response.Redirect或Response.End位于try块中时,将执行catch块中的代码 你可以抓住并吸收这种感觉
还可以考虑添加一个结束响应的最终块,而不是在尝试中使用它。如果捕获到异常,可以修改响应并将错误发送回客户端。
当response.Redirect或response.End位于try块中时,将执行catch块中的代码 你可以抓住并吸收这种感觉还可以考虑添加一个结束响应的最终块,而不是在尝试中使用它。如果捕获到异常,您可以修改响应并将错误发送回客户端。
1)您是否使用async
和wait
?2) 您是否已在计算中发送响应?response.End()
始终抛出ThreadAbortException
,因为在调用End
方法后,负责处理http响应消息的当前线程将立即中止。未使用wait或async。按钮是否位于更新面板内?如果是,您必须将其添加为触发器。1)您是否使用async
和wait
?2) 您是否已在计算中发送响应?response.End()
始终抛出ThreadAbortException
,因为在调用End
方法后,负责处理http响应消息的当前线程将立即中止。未使用wait或async。按钮是否位于更新面板内?如果是这样的话,你必须把它作为一个触发器来添加。这也是我在我的身上所做的,在回应中不可能出现真正的错误。结束。这是有时会发生的事情,微软正试图从我读到的东西中找出原因。所以错误不是问题所在,我可以处理。事实上,我的文件没有呈现给用户是一个问题。这也是我在我的文件上所做的,在Response.End上不可能出现真正的错误。这是有时会发生的事情,微软正试图从我读到的东西中找出原因。所以错误不是问题所在,我可以处理。我的文件没有呈现给用户是一个问题。