使用 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);
这仍然不能完全解决您的问题,原因如下:
- 由于您没有等待异步操作,因此您返回了 Task。
- 你不知道这一点,因为 tweet 是 var。我将更新我的演示代码以使用 Status 以便人们在使用我的示例时会看到编译器错误。
- 当您查看 tweet 时,您正在查看 Task.Status,即 TaskStatus.Faulted.
- TaskStatus.Faulted 由于未处理的异常而发生。
- 您很可能收到了由于身份验证错误导致的未处理异常 - 401 未授权。
- 我写了一个常见问题解答,其中列出了 401 异常发生的原因以及要检查原因的项目:LINQ to Twitter FAQ。
- 您应该将代码包装在 try/catch 块中,寻找 TwitterQueryException 将包含更多详细信息,包括从 Twitter API.
返回的错误文本
多亏了 Joe 的回答,我才得以深入挖掘。
使用他建议的代码并捕获异常我能够抓住这个错误:
Could not load file or assembly ‘System.Net.Http.Primitives, Version=1.5.0.0
我为 Microsoft.Net.Http 重新运行了 nuget,程序开始运行了。
库已安装,但未正确添加到配置文件中。
我正在尝试使用 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);
这仍然不能完全解决您的问题,原因如下:
- 由于您没有等待异步操作,因此您返回了 Task。
- 你不知道这一点,因为 tweet 是 var。我将更新我的演示代码以使用 Status 以便人们在使用我的示例时会看到编译器错误。
- 当您查看 tweet 时,您正在查看 Task.Status,即 TaskStatus.Faulted.
- TaskStatus.Faulted 由于未处理的异常而发生。
- 您很可能收到了由于身份验证错误导致的未处理异常 - 401 未授权。
- 我写了一个常见问题解答,其中列出了 401 异常发生的原因以及要检查原因的项目:LINQ to Twitter FAQ。
- 您应该将代码包装在 try/catch 块中,寻找 TwitterQueryException 将包含更多详细信息,包括从 Twitter API. 返回的错误文本
多亏了 Joe 的回答,我才得以深入挖掘。
使用他建议的代码并捕获异常我能够抓住这个错误:
Could not load file or assembly ‘System.Net.Http.Primitives, Version=1.5.0.0
我为 Microsoft.Net.Http 重新运行了 nuget,程序开始运行了。
库已安装,但未正确添加到配置文件中。