WebClient DownloadStringAsync загружается очень медленно - PullRequest
1 голос
/ 08 января 2011

Обновление: я пробовал HttpWebRequest, и он также демонстрирует то же поведение.

Я пытаюсь использовать WebClient DownloadStringAsync для извлечения некоторых (очень маленьких) данных из надстройки Outlook (VSTO / .Net 4.0). Это займет около 10-15 секунд, прежде чем он даже сделает запрос.

Используя возможности Google, я указал на тот факт, что он пытается подобрать настройки прокси-сервера, и что я должен установить для них значение NULL. Я пробовал оба в коде:

WebClient serviceRequest = new WebClient();
serviceRequest.Proxy = null;

и добавив файл App.config и поместив:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>
    <defaultProxy enabled="false">
      <proxy/>
      <bypasslist/>
      <module/>
    </defaultProxy>
  </system.net>
</configuration>

Я добавил файл через интерфейс «Новый элемент» (я не уверен, что его подняли и использовали).

Ни одно из этих решений не сработало. Есть ли вещи, которые я мог бы попробовать изменить.

Код, о котором идет речь, выглядит следующим образом:

class MyClient
{
    string url = "http://192.168.1.99:4567/contact.json?token={0}&email={1}"; 

    WebClient serviceRequest = new WebClient();

    public void getContact(string email, DownloadStringCompletedEventHandler methodName)
    {
        Uri target = new Uri(String.Format(url, "1234", email));
        serviceRequest.Proxy = null;

        if(serviceRequest.IsBusy)
        {
            serviceRequest.CancelAsync(); // Changed our mind and switched email
        }
        serviceRequest.DownloadStringCompleted += methodName;
        serviceRequest.DownloadStringAsync(target);
    }
}

1 Ответ

0 голосов
/ 08 января 2011

Обнаружено, в чем проблема.

Я работал на виртуальной машине с Windows 2003 Server (что у меня было доступно). Как только я установил Windows 7 (и среду) на другую виртуальную машину и попробовал ее, проблема исчезла.

На сервере не включен IE Enhanced Security.

...