我正在尝试在我的 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;
}
显然在调用此代码之前有很多设置。
- _creds 包含有效的 Twitter 用户凭据。
- _URL 包含“ http://twitter.com/statuses/replies.xml?since_id=1&page=1 ”
当我在 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 请求永远不会那么远。有些东西导致这在源头上停滞不前。有人有什么建议吗?