Установка времени ожидания для запроса ServerXMLHTTP - PullRequest
4 голосов
/ 14 октября 2010

Кто-нибудь знает, как настроить действие по умолчанию для времени ожидания запроса ServerXMLHTTP? Я использую setTimeouts (), чтобы установить параметры времени ожидания в соответствии с MSDN site .

В идеале я хотел бы снова инициализировать запрос с самого начала или обновить страницу, если время ожидания истекло.

Я использую классические 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 голосов
/ 14 октября 2010

Важно выяснить, почему истекает время ожидания.

Является ли удаленный URL-адрес тем же приложением, что и вызывающая страница?

если это так, посмотрите на ИНФОРМАЦИЯ: Не отправляйте запросы ServerXMLHTTP или WinHTTP на тот же сервер , поскольку вы столкнетесь с истощением потока ..

3 голосов
/ 14 октября 2010

Разобрался.Мне просто нужно использовать оператор 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");
    }

}
...