2010-01-18 3 views
0

J'essaie d'implémenter l'accélérateur de solution de réseautage social de Microsoft sur mon déploiement de Dynamics CRM. J'ai déjà résolu un certain nombre de problèmes avec le code, mais ce dernier m'a bloqué. L'accélérateur réseau social (ci-après dénommé SNA) utilise le code suivant pour obtenir des données de Twitter:Erreur de protocole de l'accélérateur de réseau social 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; 
      } 

Évidemment, il y a beaucoup de configuration avant d'appeler ce code.

Quand je lance ce code dans Visual Studio, ou à l'intérieur d'un harnais de test en dehors de Dynamics CRM, il fonctionne comme prévu et renvoie une chaîne contenant du XML retourné de Twitter. Mais, quand je l'exécute dans mon système CRM (dans le cadre du workflow), je reçois une 'erreur de protocole' au point où le code exécute wCli.OpenRead (_URL). J'ai retracé l'exécution et dans les deux cas, la même URL et les informations d'identification Twitter sont utilisés, en dehors du tout système CRM fonctionne, à l'intérieur CRM, je reçois l'erreur:

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

Je pense que cela pourrait être causé par le fait que je cours derrière un serveur proxy web ISA, cependant la console de journalisation dans ISA suggère que la requête web ne va jamais aussi loin. Quelque chose provoque l'arrêt à la source. Quelqu'un a-t-il des suggestions?

Répondre

0

J'ai confirmé qu'il s'agit en fait d'un problème de proxy. Je ne suis pas sûr que je comprends parfaitement pourquoi il est un problème, mais j'ai essayé ce petit fix et il a fait le travail:

 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 
      { 

Il est évident que cela doit être fait en quelque sorte configurable, mais il a prouvé le concept.

Questions connexes