首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试着抓住ExecutionTimeout不起作用

试着抓住ExecutionTimeout不起作用
EN

Stack Overflow用户
提问于 2013-10-22 14:47:12
回答 1查看 1.4K关注 0票数 1

这一次给我带来了很多痛苦!对于我的应用程序,我使用的是110秒的全局ExecutionTimeout。一个特定的页面会生成大量未处理的异常,因为它包含一个FileUpload控件。

现在是问题.我知道如何使用以下声明限制web.config中的文件大小和执行超时。

代码语言:javascript
复制
<httpRuntime maxRequestLength="2097152" executionTimeout="600" />

我的问题就在这里:

代码语言:javascript
复制
    'Check file size
    Dim fileSize As Integer
    Try
        fileSize = FileUpload1.FileBytes.Length
    Catch ex As Exception
        'Display message to user...
        Exit Sub
    End Try

检查文件长度的过程非常频繁地抛出异常,而且在上面的try, catch中没有很好地捕捉到该异常,它似乎要遵从global.asax中应用程序级的异常处理。

我很确定我不能检查客户端的文件大小,我不想继续弹出maxRequestLengthexecutionTimeout,我所要做的就是捕捉页面上的超时并显示一条消息。这个是可能的吗?

编辑-

为了在这里更好地说明这个问题,请运行以下代码(假设您的默认executionTimeout是110秒)。

代码语言:javascript
复制
    Try
        system.threading.thread.sleep(120000)
    Catch ex As Exception
        response.write("Error caught!!")
        Exit Sub
    End Try

确保已关闭调试。catch块不能工作,最终会出现一个未处理的System.Web.HttpException: Request timed out错误,这一点我还没有弄清楚呢?

EN

回答 1

Stack Overflow用户

发布于 2013-10-22 16:47:18

结果,页面上的代码并没有在这里直接抛出异常,因此它没有被try, catch捕获。当脚本执行时间过长时,应用程序会监视和干预,因此当异常在应用程序级别引发时,我们需要遵从global.asax。

解决方案包括在Global.asax Application_Error块中捕获错误,然后将错误类型附加到查询字符串中,将response.redirecting返回到原始页面。

代码语言:javascript
复制
 Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        Dim exc As Exception = Server.GetLastError
        Dim context As HttpContext = DirectCast(sender, HttpApplication).Context

        Dim uri As String = context.Request.Url.PathAndQuery

        If uri.Contains("users/account.aspx") Then
            Response.Redirect(context.Request.Url.PathAndQuery & "&err=" & exc.GetType().ToString)
        End If
End Sub

然后,您可以签入页面加载中的任何err查询字符串值,然后相应地在页面上显示错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19521131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档