当我在调试模式下运行代码时,出现异常(System.Web.HttpException:“请求在此上下文中不可用”),但是当我在发布模式下运行时(Ctrl-F5),该异常甚至都没有出现。例外出现在Server.Transfer
行。
在调试模式下运行时,如何防止这种情况发生?
protected void Application_Error(object sender, EventArgs e)
{
//Gets the last error, emails it
var exc = Server.GetLastError();
Server.ClearError();
if (exc == null)
{
exc = new ApplicationException("*** Application Exception - Unknown/null exception ***");
}
if (exc is HttpException)
{
var errorCode = ((HttpException)exc).GetHttpCode();
Response.Redirect("~/ErrorPage.aspx?e=" + errorCode.ToString());
}
else
{
exc.Publish();
Server.Transfer("~/ErrorPage.aspx?e=unknown");
}
}
最佳答案
Server.Transfer仅适用于单个HttpContext。每个虚拟目录或应用程序都有其自己的HttpContext对象,他们不知道它们共存!
您可以在这里Error Message When You Use Server.Transfer or Server.Execute in ASP.NET Page找到更完整的解释
解决方案是将方法更改为另一个方法,例如Response.Redirect(“〜\ somepath.aspx”);。或HttpContext.Current.RewritePath(“ somepath.aspx”);
关于c# - Debug模式下的错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50840085/