当我在调试模式下运行代码时,出现异常(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/

10-13 07:31