使用 linqtotwitter 发送推文时 "Faulted" 的响应

Response of "Faulted" when sending a tweet using linqtotwitter

我正在尝试使用 linq 向 Twitter 发送简单的状态更新(推文)。我可以正常连接,但是当我发送一条推文时,我使用以下代码获得 return 状态 "faulted"。

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 复制和粘贴的)并且我拥有向相关帐户发送 post 消息的完全权限。

你应该等待 TweetAsync,像这样:

Status tweet = await ctx.TweetAsync(text);

这仍然不能完全解决您的问题,原因如下:

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

多亏了 Joe 的回答,我才得以深入挖掘。

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

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

我为 Microsoft.Net.Http 重新运行了 nuget,程序开始运行了。

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