为ServerXMLHTTP请求设置超时

Cho*_*hoy 5 javascript timeout serverxmlhttp asp-classic

有没有人知道如何设置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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Gab*_*oli 5

重要的是找出它为何超时的原因..

远程Url与呼叫页面在同一个应用程序上吗?

如果是这样看看INFO:不要将ServerXMLHTTP或WinHTTP请求发送到同一服务器,因为您将面临线程饥饿..


Cho*_*hoy 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");
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用纯经典 ASP,则可以捕获“msxml6.dll”错误“80072EE2”(“操作超时”)。它将被“send”方法抛出。 (2认同)