C# 响应。结束导致System.Threading.ThreadAbortException

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

我在button_Click()方法中有一个try catch,我使用EPPlus将一些数据保存到Excel电子表格中

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上不可能出现真正的错误。这是有时会发生的事情,微软正试图从我读到的东西中找出原因。所以错误不是问题所在,我可以处理。我的文件没有呈现给用户是一个问题。