回应"故障"使用linqtotwitter发送推文时

时间:2015-02-15 22:12:37

标签: c# linq-to-twitter

我正在尝试使用linq向twitter发送一个简单的状态更新(推文)。我可以连接好,但是当我发送推文时,我会使用以下代码获得“故障”的返回状态。

public async Task Tweet(string text)
{
    var auth = GetCredentials();
    await auth.AuthorizeAsync();

    var ctx = new TwitterContext(auth);

    var tweet = ctx.TweetAsync(text);

    if (tweet != null)
        Console.WriteLine(tweet.Status);
}

我的GetCredentials方法如下:

private static SingleUserAuthorizer GetCredentials()
{
    return new SingleUserAuthorizer
    {
        CredentialStore = new SingleUserInMemoryCredentialStore()
        {
            ConsumerKey = ####,
            ConsumerSecret = ####,
            AccessToken = ####,
            AccessTokenSecret = ####,
        }
    };
}

确认我在twitter上创建了一个应用程序。凭证是正确的(或至少从Twitter复制和粘贴),我有完全的权限将消息发布到相关帐户。

2 个答案:

答案 0 :(得分:1)

您应该等待 TweetAsync ,如下所示:

Status tweet = await ctx.TweetAsync(text);

这仍然无法一直解决你的问题,原因如下:

  1. 由于您没有等待异步操作,因此您返回任务
  2. 您不知道这一点,因为推文 var 。我将更新我的演示代码以使用状态,以便人们在使用我的示例时会看到编译器错误。
  3. 当您查看推文时,您正在查看 Task.Status ,即 TaskStatus.Faulted
  4. 由于未处理的异常,
  5. TaskStatus.Faulted 发生。
  6. 由于身份验证错误,您很可能收到了未处理的异常 - 401 Unauthorized。
  7. 我写了一篇常见问题解答,其中列出了401例外发生的原因,以及检查原因的项目:LINQ to Twitter FAQ
  8. 您应该将代码包装在 try / catch 块中,寻找具有更多详细信息的 TwitterQueryException ,包括从Twitter API返回的错误文本。< / LI>

答案 1 :(得分:0)

感谢Joe的回答,我能够深入挖掘我的。

使用他建议的代码并捕获异常我能够抓住这个错误:

Could not load file or assembly ‘System.Net.Http.Primitives, Version=1.5.0.0

我为Microsoft.Net.Http重新编写了这个程序,这个程序栩栩如生。

已安装库但未正确添加到配置文件中。