为ServerXMLHTTP请求设置超时时间

6

有人知道如何为 ServerXMLHTTP 请求设置默认操作以处理超时吗?我正在使用 setTimeouts() 根据 MSDN 网站 中的说明设置超时选项。

理想情况下,如果超时,我希望能够从头开始初始化请求或刷新页面。

我正在使用经典 asp 和 jscript。

这是我的请求:

function serverXmlHttp(url) {
    var serverXmlHttp;
    serverXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0");

    // set time out options
    serverXmlHttp.setTimeouts(15000,15000,15000,15000);

    // does not work
    // serverXmlHttp.ontimeout(Response.Write("page has timed out"));

    serverXmlHttp.open("GET", url, false);
    serverXmlHttp.send();

    if (serverXmlHttp.readyState == 4) {
        return serverXmlHttp.responseText;
    }
}
2个回答

5

1
不,不是这样的。该请求是发送到另一台服务器上的数据库。我只是想设置一个故障保护机制,以防请求超时(有时会发生),而不是出现通用的超时错误。 - Choy

4

搞定了。我只需要使用try/catch语句。

function serverXmlHttp(url) {

    try {
        var serverXmlHttp;
        serverXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0");

        // set time out options
        serverXmlHttp.setTimeouts(15000,15000,15000,15000);

        serverXmlHttp.open("GET", url, false);
        serverXmlHttp.send();

        if (serverXmlHttp.readyState == 4) {
            return serverXmlHttp.responseText;
        }
    catch(error) {
        // whatever I want to happen if there's an error
        Response.Write("Sorry, your request has timed out");
    }

}

2
如果您正在使用纯经典 ASP,您可以捕获“msxml6.dll”错误80072EE2(“操作超时”)。它将由send方法抛出。 - dakab

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接