Dynamics CRM社交网络加速器协议错误

时间:2010-01-18 19:51:56

标签: social-networking dynamics-crm accelerator isaserver

我正在尝试在Dynamics CRM部署上实施Microsoft的社交网络解决方案加速器。我已经解决了代码中的一些问题,但最后一个问题让我很难过。社交网络加速器(以下简称SNA)使用以下代码从Twitter获取数据:

        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之外的测试工具中运行此代码时,它按预期工作并返回包含从Twitter返回的XML的字符串。

但是,当我在CRM系统中运行它(作为工作流程的一部分)时,我会在代码执行wCli.OpenRead(_URL)时收到“协议错误”。我已经跟踪了执行情况,在两种情况下都使用了相同的URL和Twitter凭据,在CRM系统之外一切正常,在CRM内部,我收到错误:

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

我怀疑这可能是因为我在ISA Web代理服务器后面运行,但ISA中的日志记录控制台表明Web请求永远不会那么远。有些事情导致这种情况在源头停滞不前。有人有任何建议吗?

1 个答案:

答案 0 :(得分: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
            {

显然,这需要以某种方式进行配置,但它已经证明了这一概念。