我试图在我的Dynamics部署上实现微软的社交网络解决方案加速器。我已经解决了一些与代码有关的问题,但这最后一个问题让我感到困惑。社交网络加速器(以下简称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;
}显然,在调用此代码之前有很多设置。
credentials.
当我在visual studio或Dynamics之外的测试工具中运行这段代码时,它可以正常工作,并返回包含从Twitter返回的XML的字符串。
但是,当我在我的CRM系统中运行它时(作为工作流的一部分),在代码执行wCli.OpenRead(_URL)时,我会收到一个“协议错误”。我跟踪了执行过程,在这两种情况下都使用了相同的URL和Twitter凭据,在CRM系统之外,一切都正常工作,在CRM中,我得到了错误:
{"The remote server returned an error: (403) Forbidden."}我怀疑这可能是由于我运行在ISA web代理服务器后面的事实,但是ISA中的日志控制台表明web请求永远不会有那么远。有什么东西导致这件事在源头上停滞了。有人有什么建议吗?
发布于 2010-01-18 23:25:06
我已经证实这实际上是一个代理问题。我不确定我是否完全理解为什么这是个问题,但我尝试了这个小小的修正,它确实奏效了:
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
{显然,这需要在某种程度上进行可配置,但它已经证明了这一概念。
https://stackoverflow.com/questions/2088765
复制相似问题