Twitterizer.OAuthUtility.GetRequestToken()中的错误“值不能为空。参数名称:字符串”

时间:2011-10-31 19:07:16

标签: c# twitter twitterizer

这是我收到错误的行:

var requestToken = OAuthUtility.GetRequestToken(
    _consumerKey, 
    _consumerSecret, 
    "http://mysite.com/Twitter/GetToken");

_consumerKey和_consumerSecret有适当的值。

堆栈追踪:

  

[ArgumentNullException:Value不能为null。   参数名称:String]     System.Number.StringToNumber(String str,NumberStyles options,NumberBuffer&amp; number,NumberFormatInfo info,Boolean parseDecimal)+9585854     System.Number.ParseInt32(String s,NumberStyles style,NumberFormatInfo info)+119     C:\ Projects \ twitterizer-132 \ Twitterizer2 \ Exceptions \ TwitterizerException.cs中的Twitterizer.TwitterizerException.ParseRateLimitHeaders(WebResponse响应):200     C:\ Projects \ twitterizer-132 \ Twitterizer2 \ Exceptions \ TwitterizerException.cs中的Twitterizer.TwitterizerException..ctor(String message,Exception innerException):98     在C:\ Projects \ twitterizer-132 \ Twitterizer2 \ OAuth \ OAuthUtility.cs中的Twitterizer.OAuthUtility.GetRequestToken(String consumerKey,String consumerSecret,String callbackAddress):95     D:\ PROJECTS \ Brace \ v1 \ Brace.Twitter \ Tweeting.cs中的Brace.Twitter.Tweeting.GetRequestTokenUrl():18     D:\ PROJECTS \ Brace \ v1 \ Brace \ Controllers \ TwitterController.cs中的Brace.Controllers.TwitterController.GetToken(String oauth_token,String oauth_verifier):15     lambda_method(Closure,ControllerBase,Object [])+157     System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller,Object []参数)+17     System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary 2 parameters) +208 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2个参数)+27     System.Web.Mvc。&lt;&gt; c_ DisplayClass15.b _12()+55     System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter过滤器,ActionExecutingContext preContext,Func 1 continuation) +263 System.Web.Mvc.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14() +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList 1个过滤器,ActionDescriptor actionDescriptor,IDictionary 2 parameters) +191 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343 System.Web.Mvc.Controller.ExecuteCore() +116 System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10 System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37 System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21 System.Web.Mvc.Async.<>c__DisplayClass8 1.b__7(IAsyncResult )+12     System.Web.Mvc.Async.WrappedAsyncResult`1.End()+62     System.Web.Mvc。&lt;&gt; c _DisplayClasse.b_ d()+50     System.Web.Mvc.SecurityUtil.b _0(动作f)+7     System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action)+22     System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)+60     System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)+9     System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+8963149     System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&amp; completedSynchronously)+184

1 个答案:

答案 0 :(得分:1)

这是我过分模糊的最佳尝试:这个错误实际上是另一个问题的症状。

很可能,您的应用程序(不是您的实际应用程序,而是向您提供控制台令牌的Twitter注册)未设置为Web应用程序。它们的形式具有误导性:当您选择Web应用程序时,它不会使回调网址成为必需,但它实际上是必需的。当您在没有回调网址的情况下保存应用时,它实际上将其保存为桌面应用。

桌面应用程序的问题是您无法使用回调网址。 Web应用程序可以使用基于PIN的身份验证,但桌面应用程序无法使用基于Web的身份验证。 (我确信这是一个很好的理由。)

因此,Twitter拒绝了您获取请求令牌的请求,因为您还提供了回调。

实际的例外是因为Twitterizer仍在寻找包含在每个(好的,好的,几乎每个)响应中的速率限制信息,即使是失败的请求也是如此。

我(最终)会解决这个问题,但它无法解决你的真正问题。