2010-01-18 56 views
0

我正試圖在Dynamics CRM部署上實施Microsoft的社交網絡解決方案加速器。我已經用代碼解決了一些問題,但最後一個問題讓我難堪。社交網絡加速器(以下簡稱SNA)使用下面的代碼從Twitter獲取數據:Dynamics 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中的代碼,或動態CRM以外的測試工具中,它工作正常,並返回從Twitter返回一個包含XML的字符串。

但是,當我在我的CRM系統(作爲工作流程的一部分)內運行它時,我在代碼執行wCli.OpenRead(_URL)的位置收到'協議錯誤'。我跟蹤執行,並在這兩種情況下相同的URL和Twitter憑據使用CRM系統一切正常,內外部的CRM,我得到的錯誤:

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

我懷疑這可能是由以下事實引起的我在ISA Web代理服務器後面運行,但是ISA中的日誌控制檯表明Web請求永遠不會那麼遠。有些東西導致這種情況在源頭停頓。任何人有任何建議?

回答

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 
      { 

顯然,這需要進行配置的莫名其妙,但事實證明這個概念。