我最近一直在使用LinqToTwitter将它成功地整合到几个站点中。一个网站让我头疼。它似乎在验证,但是一旦你尝试迭代返回的推文集合,我就会收到一个错误:
“远程主机强行关闭现有连接”
这是我的代码:
protected void Page_Load(object sender, EventArgs e)
{
var auth = new SingleUserAuthorizer
{
CredentialStore = new SingleUserInMemoryCredentialStore
{
ConsumerKey = System.Configuration.ConfigurationManager.AppSettings["TwitterAPIKey"],
ConsumerSecret = System.Configuration.ConfigurationManager.AppSettings["TwitterSecretKey"],
AccessToken = System.Configuration.ConfigurationManager.AppSettings["TwitterAccessToken"],
AccessTokenSecret = System.Configuration.ConfigurationManager.AppSettings["TwitterSecretToken"]
}
};
var ctx = new TwitterContext(auth);
var mytweets = ctx.Status.Where(t => t.Type == StatusType.User && t.ScreenName == "paulpitchford");
try
{
if (mytweets != null)
{
foreach (var item in mytweets)
{
tweets.TweetList.Add(TweetParser.ParseTweet(item.Text));
}
}
}
catch (Exception err)
{
}
}
一旦遇到此行就会发生错误:foreach(mytweets中的var项目)
键与API给定的键完全匹配,我看不出我做错了。任何人都可以建议我可能出错的地方吗?
谢谢。
保罗。
答案 0 :(得分:1)
LINQ to Twitter是异步的。这意味着您需要在进入 foreach 循环之前实现查询,如下所示:
var mytweets =
await
ctx.Status.Where(
t => t.Type == StatusType.User &&
t.ScreenName == "paulpitchford")
.ToListAsync();
请注意查询和 ToListAsync 运算符上的等待。此外,您必须将 async 修饰符添加到 Page_Load ,如下所示:
protected async void Page_Load(object sender, EventArgs e)