Ошибка веб-сервиса - PullRequest
0 голосов
/ 26 марта 2011

Я использую Log Me In Rescue API для извлечения некоторых отчетов из их веб-службы (используется в качестве веб-ссылки через Visual Studio 2010).

отчет работает.

Однако, когда я пытаюсь запустить другой отчет, он дает мне:

getReport_PollRateExceeded

Я говорил с сотрудниками службы технической поддержки Log Me In Rescue, и они заявили, что это не проблема их API, а проблема с кодом, который я использую. У них не было ограничений на количество отчетов, которые вы можете получать с сервера (они даже позволяют вам делать это в режиме реального времени).

Я запрашиваю их сервер только раз в 30 или около того, поэтому я не могу превысить установленный предел в .NET, который я могу придумать.

API веб-сервиса можно найти здесь:

https://secure.logmeinrescue.com/API/API.asmx

Их вики здесь:

http://logmeinwiki.com/wiki/Rescue:API

Код, который я использую:

 private void myReport_DoWork(object sender, DoWorkEventArgs e)
        {
            LMIR.getReportRet response = new LMIR.getReportRet();

            while (response.ToString() != "getReport_OK")
            {
                response = proxy.getReport(iTechID, NODE_REF.NODE, sAuthCodes, out sReports);

            }
        }

Я больше не вызываю этот рабочий процесс, пока пользователь НЕ ЗАПРОСИТ его, я даже отключаю кнопку запроса в пользу индикатора выполнения, ожидая завершения процедуры runworkercompleted ().

Но, разумеется, если я запрашиваю в течение этого 30-секундного лимита, я получаю pollRateExceeded.

Так что я в замешательстве.

Это можно исправить в файле app.config?


С тех пор я создал короткую программу:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Net;
using System.Web;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Linq;
using testLMIR.LMIR;
using System.Collections;
using System.Text.RegularExpressions;

namespace testLMIR
{
    public partial class Form1 : Form
    {
        string sUser = "";
        string sPass = "";
        int iNodeID = 74249;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {


        }

        private void button1_Click(object sender, EventArgs e)
        {
            LMIR.API proxy = new LMIR.API();
            proxy.CookieContainer = new CookieContainer();

            sUser = textBox1.Text.ToString();
            sPass = textBox2.Text.ToString();


            loginRet oLogin = proxy.login(sUser, sPass);
            Console.WriteLine(oLogin.ToString());

            string sAuthCode = "";
            requestAuthCodeRet oAuthCodeReq = proxy.requestAuthCode(sUser, sPass, out sAuthCode);

            string sReport = "";

            getReportRet oGetReport = proxy.getReport(iNodeID,NODE_REF.NODE, sAuthCode, out sReport);
            Console.WriteLine(oGetReport + "<br />");

            Thread.Sleep(10000);

            oGetReport = proxy.getReport(iNodeID, NODE_REF.NODE, sAuthCode, out sReport);
            Console.WriteLine(oGetReport + "<br />");

            Thread.Sleep(10000);

            oGetReport = proxy.getReport(iNodeID, NODE_REF.NODE, sAuthCode, out sReport);
            Console.WriteLine(oGetReport + "<br />");

            Thread.Sleep(10000);
        }
    }
}

Эта программа будет принимать логин из 2-х текстовых полей в форме и предпринимать действия при нажатии кнопки. Вот результаты:

login_OK
getReport_OK<br />
getReport_PollRateExceeded<br />
getReport_PollRateExceeded<br />

Если я правильно читаю эту информацию, я вижу, что даже через 30 секунд я все еще не могу получить отчет.

Я очень сомневаюсь, что это ограничение программы, нет?

Ответы [ 2 ]

0 голосов
/ 21 октября 2011

По словам команды инженеров LMIR, превышенный уровень загрязнения действительно существует; вы не можете запросить более 1 части информации в течение 60 секунд; только PinCodes будет работать с этим. Все остальное - 1 запрос в минуту. В настоящее время это невозможно.

0 голосов
/ 26 марта 2011

Тугое зацикливание без какой-либо точки завершения, кроме успеха, выглядит для меня плохой идеей.Что, если аутентификация изменилась, например?Вы бы забили службу так сильно, как могли.У меня был бы максимальный предел повторных попыток на вашем месте.Я также добавил бы в ваш код некоторые входящие в систему записи, чтобы вы могли видеть, как часто вам нужно повторять попытки.

Однако, если сотрудники службы технической поддержки утверждают, что у нихограничить, но похоже, что вы делаете, это достаточно легко узнать наверняка: регистрировать трафик.Используйте Wireshark или Fiddler для регистрации запросов и ответов.Если вы можете доказать, что ошибка «PollRateExceeded» определенно связана с их службой, я, безусловно, надеюсь, что они рассмотрят это.сообщить дважды, с интервалом в десять секунд.Если это работает , вам нужно понять, почему это не работает для вас в вашем обычном коде.Если это не работает, отправьте им этот код, который должен быть кратким и полным.Дайте им сетевой след в то же время.Им будет трудно с этим спорить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...