LinqToTwitter的BeginAuthorizationAsync方法抛出了NullReferenceException异常。

3

我正在尝试使用LinqToTwitter nuget插件(v3.1.2)将Twitter集成到现有的MVC4应用程序中,并按照这里的文档进行操作。

Imports LinqToTwitter

Public Class OAuthController
Inherits System.Web.Mvc.Controller

Async Function BeginAsync() As Threading.Tasks.Task(Of ActionResult)
    Dim auth = New MvcAuthorizer() With { _
        .CredentialStore = New SessionStateCredentialStore() With { _
            .ConsumerKey = ConfigurationManager.AppSettings("consumerKey"), _
            .ConsumerSecret = ConfigurationManager.AppSettings("consumerSecret") _
        } _
    }

    Dim twitterCallbackUrl As String = Request.Url.ToString().Replace("Begin", "Complete")
    Dim callbackUrl = New Uri(twitterCallbackUrl)
    Return Await auth.BeginAuthorizationAsync(callbackUrl)
End Function

第二行代码抛出了一个异常:System.NullReferenceException:对象引用未设置为对象的实例。 由于错误是从插件中抛出的,我不确定如何继续。堆栈跟踪在此处
1个回答

1
我找到了问题。根本原因是BeginAuthorizationAsync在底层使用HttpContext.Current,这不是访问MVC控制器上下文的正确方式。
我已经在这里提交了一个拉取请求:https://github.com/JoeMayo/LinqToTwitter/pull/18 作为解决方法,您可以在调用BeginAuthorizationAsync之前添加以下代码。
auth.GoToTwitterAuthorization = (authUrl) => {
    ControllerContext.HttpContext.Response.Redirect(authUrl);
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接