我正在清理一些遗留的框架代码,大量的代码只是异常编码。不检查任何值是否为空,因此会抛出和捕获大量异常。
我已经清理了大部分,但是,有一些错误/登录/安全相关的框架方法正在进行响应。我们经常遇到“response.redirect不能在页面回调中调用”的问题,如果可能的话,我想尽量避免这种情况。
有没有办法在程序上避免这个异常?我在找类似的东西

if (Request.CanRedirect)
    Request.Redirect("url");

注意,这也发生在server.transfer上,所以我想检查我是否能够执行request.redirect或server.transfer。
目前,它只是这样做
try
{
    Server.Transfer("~/Error.aspx"); // sometimes response.redirect
}
catch (Exception abc)
{
    // handle error here, the error is typically:
    //    Response.Redirect cannot be called in a Page callback
}

最佳答案

你可以试试

if (!Page.IsCallback)
    Request.Redirect("url");

或者如果你手头没有一页纸…
try
{
    if (HttpContext.Current == null)
        return;
    if (HttpContext.Current.CurrentHandler == null)
        return;
    if (!(HttpContext.Current.CurrentHandler is System.Web.UI.Page))
        return;
    if (((System.Web.UI.Page)HttpContext.Current.CurrentHandler).IsCallback)
        return;

    Server.Transfer("~/Error.aspx");
}
catch (Exception abc)
{
    // handle it
}

关于c# - 如何避免“无法在Page回调中调用Response.Redirect”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1538749/

10-13 07:08