MVC5使用Facebook登录出现空引用问题。
MVC5使用Facebook登录出现空引用问题。
我使用ASP.NET mvc5的默认账号控制器以facebook登录时,有时会出现null引用异常。
这是有问题的方法:
public async Task ExternalLoginCallback(string returnUrl) { // Crashes on this line var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(); if (loginInfo == null) { return RedirectToAction("Login"); } }
我不知道如何调试。在代码中设置断点然后逐步执行对我没有帮助……最终只能看我的Error.cshtml页面。这时候的错误是一个简单的空对象引用异常,内部异常也是null。
编辑
我通过Nuget更新了最新的Owins,但没有变化。
编辑2
通过Fiddler查看,Facebook以正确的json格式返回200。
编辑3
很奇怪。我正在测试三个Facebook账户。其中两个账户正常,一个账户失败。而那个失败的账户返回200。我已在Facebook中删除了应用程序的引用……我会看到一个应用程序确认窗口,我点击确定,然后就失败了……非常奇怪。
admin 更改状态以发布 2023年5月21日
暂时的快速解决方案。
在ExternalLoginCallback之前必须清除Session。如下所示:
[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult ExternalLogin(string provider, string returnUrl) { ControllerContext.HttpContext.Session.RemoveAll(); // Request a redirect to the external login provider return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl })); }