0

好的,大师们,这是我的问题。

我在 Visual Studio 2012 中创建了一个 asp.net VB 项目。为简单起见,我创建了一个新项目。

我添加了我的 facebook api 信息(用于身份验证)

Facebook 身份验证有效。

我使用 NuGet 接口来更新 openAuth。Facebook 身份验证仍然有效。

我使用 NuGet 更新实体框架(升级到哪个版本都没有关系)并且 dotnet open auth 不再有效。我的问题是运行时错误,而 registerexternallogin.aspx 检查本地使用是否已登录。这是 registerExternalLogin.aspx 中的代码行(由 Visual Studio 随项目自动创建)

  ' User has logged in with provider successfully
    ' Check if user is already registered locally
    If OpenAuth.Login(authResult.Provider, authResult.ProviderUserId, createPersistentCookie:=False) Then
        RedirectToReturnUrl()
    End If

堆栈跟踪:

[NullReferenceException: Object reference not set to an instance of an object.]

Microsoft.AspNet.Membership.OpenAuth.OpenAuthDataProvider.GetUserNameFromOpenAuth(String openAuthProvider, String openAuthId) +51 DotNetOpenAuth.AspNet.OpenAuthSecurityManager.Login(String providerUserId, Boolean createPersistentCookie) +66 Microsoft.AspNet.Membership.OpenAuth.OpenAuth.Login(String providerName , 字符串 providerUserId, Boolean createPersistentCookie) +197 Account_RegisterExternalLogin.ProcessProviderResult() +588 System.Web.UI.Control.LoadRecursive() +70 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3177

将我的运行时指定为使用 entityframework 5.0.x 并不能解决问题(在这种情况下它已升级到 6),并且使用命令行回滚 entityframework 并不能解决问题。

提前致谢。麦克风

4

2 回答 2

0

经过几个小时的测试,我今天遇到了这个问题。它起初工作没有问题。然后,我从先前创建的数据库中删除了用户和成员,并删除了所有站点 cookie(以防万一)。

但是,我发现克服错误(不更改代码)的唯一方法是使用另一个登录名再次测试。(不同的 Twitter 帐户)。

于 2013-11-12T18:40:04.607 回答
0

好的,刚刚用我原来的 Twitter 账户恢复了测试,又得到了错误。

我通过以下方式修复了错误:

  1. 从表 [aspnet_Users]、[aspnet_Membership]、[UsersOpenAuthAccounts] 和 [UsersOpenAuthData] 中删除相关记录。

  2. 在 IIS 上重新启动网站。

  3. 删除网站 cookie。

问题解决了。

于 2013-11-13T15:19:50.483 回答