2010-01-18 8 views
0

Я пытаюсь внедрить ускоритель решения социальных сетей Microsoft в моем развертывании Dynamics CRM. Я уже разрешил ряд проблем с кодом, но этот последний меня озадачил. Networking Accelerator Social (далее именуемая СНС) использует следующий код, чтобы получить данные из Twitter:Ошибка протокола ускорителя социальной сети CRM

 case "GET": 
      WebClient wCli = new WebClient(); 
      if (_creds != null) 
      { 
       wCli.Credentials = _creds; 
      } 
      try 
      { 
       using (Stream str = wCli.OpenRead(_URL)) 
       { 
        using (StreamReader reader = new StreamReader(str)) 
        { 
         responseXml = reader.ReadToEnd(); 
        } 
       } 
      } 
      catch (WebException ex) 
      { 
       if (ex.Response is HttpWebResponse) 
       { 
        if ((ex.Response as HttpWebResponse).StatusCode == HttpStatusCode.NotFound) 
        { 
         return null; 
        } 
       } 
       throw ex; 
      } 

Очевидно, что существует много установки до вызова этого кода.

Когда я запускаю этот код в Visual Studio, или в тестовой упряжи вне Dynamics CRM, он работает, как ожидалось, и возвращает строку, содержащую XML вернулся из Twitter.

Но, когда я запускаю его внутри своей CRM-системы (как часть рабочего процесса), я получаю «Ошибка протокола» в точке, где код выполняет wCli.OpenRead (_URL). Я проследил выполнение и в обоих случаях используется тот же URL и учетные данные Twitter, вне системы CRM все работает, внутри CRM, я получаю ошибку:

{"The remote server returned an error: (403) Forbidden."} 

Я подозреваю, что это может быть вызвано тем, что я бегу за веб-прокси-сервером ISA, однако консоль протоколирования в ISA предлагает, чтобы веб-запрос никогда не доходил до этого. Что-то заставляет это останавливаться у источника. У кого-нибудь есть предложения?

ответ

0

Я подтвердил, что это на самом деле проблема с прокси. Я не уверен, я полностью понимаю, почему это проблема, но я попробовал это немного исправить и сделал работы:

 case "GET": 
      WebClient wCli = new WebClient(); 
      if (_creds != null) 
      { 
       wCli.Credentials = _creds; 
      } 
       //[TPL] Configure web proxy 
       IWebProxy proxy = new WebProxy("sbs", 8080); 
       proxy.Credentials = new NetworkCredential(@"DOMAIN\User", "password"); 
       wCli.Proxy = proxy; 
      try 
      { 

Очевидно, что это должно быть сделано конфигурируемый как-то, но он доказал свою концепцию.