捕捉到“超出最大请求长度”

捕捉到“超出最大请求长度”,第1张

捕捉到“超出最大请求长度”

不幸的是,没有简单的方法来捕获此类异常。我要做的是要么在页面级别覆盖OnError方法,要么在global.asax中覆盖Application_Error,然后检查它是否是最大请求失败,如果是,则转移到错误页面。

protected override void onError(EventArgs e) .....private void Application_Error(object sender, EventArgs e){    if (GlobalHelper.IsMaxRequestExceededException(this.Server.GetLastError()))    {        this.Server.ClearError();        this.Server.Transfer("~/error/UploadTooLarge.aspx");    }}

这是一个hack,但是下面的代码对我有用

const int TimedOutExceptionCode = -2147467259;public static bool IsMaxRequestExceededException(Exception e){    // unhandled errors = caught at global.ascx level    // http exception = caught at page level    Exception main;    var unhandled = e as HttpUnhandledException;    if (unhandled != null && unhandled.ErrorCode == TimedOutExceptionCode)    {        main = unhandled.InnerException;    }    else    {        main = e;    }    var http = main as HttpException;    if (http != null && http.ErrorCode == TimedOutExceptionCode)    {        // hack: no real method of identifying if the error is max request exceeded as         // it is treated as a timeout exception        if (http.StackTrace.Contains("GetEntireRawContent"))        { // MAX REQUEST HAS BEEN EXCEEDED return true;        }    }    return false;}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5011871.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存