asp.net - 我在使用 asp.net core 2.2 应用程序的生产中的 facebook 登录回调中收到错误 500
问题描述
我的问题主要出现在 smarterasp.net 主机上部署应用程序之后。
当尝试登录 facebook 时,它会将我重定向到 facebook,然后在我接受返回应用程序所需的权限后,我在 .../Identity/Account/ExternalLogin?handler=Callback# =上收到 500 错误页面
我试图查看日志,但即使在手动创建日志文件夹后也没有出现日志。
我试图对 webconfig 进行一些更改,例如进程内到进程外,但没有任何效果。
返回 OnGetCallbackAsync() 时,问题出现在 OnPost() 之后。
public IActionResult OnPost(string provider, string returnUrl = null)
{
// Request a redirect to the external login provider.
var redirectUrl = Url.Page("./ExternalLogin", pageHandler: "Callback", values: new { returnUrl });
var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);
return new ChallengeResult(provider, properties);
}
public async Task<IActionResult> OnGetCallbackAsync(string returnUrl = null, string remoteError = null)
{
returnUrl = returnUrl ?? Url.Content("~/");
if (remoteError != null)
{
ErrorMessage = $"Error from external provider: {remoteError}";
return RedirectToPage("./Login", new {ReturnUrl = returnUrl });
}
var info = await _signInManager.GetExternalLoginInfoAsync();
if (info == null)
{
ErrorMessage = "Error loading external login information.";
return RedirectToPage("./Login", new { ReturnUrl = returnUrl });
}
// Sign in the user with this external login provider if the user already has a login.
var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false, bypassTwoFactor : true);
if (result.Succeeded)
{
_logger.LogInformation("{Name} logged in with {LoginProvider} provider.", info.Principal.Identity.Name, info.LoginProvider);
return LocalRedirect(returnUrl);
}
if (result.IsLockedOut)
{
return RedirectToPage("./Lockout");
}
else
{
// If the user does not have an account, then ask the user to create an account.
ReturnUrl = returnUrl;
LoginProvider = info.LoginProvider;
if (info.Principal.HasClaim(c => c.Type == ClaimTypes.Email))
{
Input = new InputModel
{
Email = info.Principal.FindFirstValue(ClaimTypes.Email)
};
}
return Page();
}
}
解决方案
没有问题,但是我正在发布的构建它是一些如何未完成的,并且一些控制器正在缓存一个参数,但是一旦从 Facebook 重定向,缓存就会被清除一些,并且问题出现了。
推荐阅读
- visual-studio-code - 如何让 Sublime Text 3 更像 VSCode?
- node.js - Docker Swarm 中的 MongoDB 初始化
- sql - 在 Oracle 中解析多个 Json 数组元素
- python - Oracle数据库表的Django迁移错误
- javascript - 来自 Promise 的 Jest 模拟回调函数
- java - Spring boot JPA - 按实体集合排序
- ruby - 外部块中的动态方法可以在子块中访问吗?- Ruby 元编程
- amazon-web-services - 从 DynamoDB 的 Lambda 获取 JSON 可序列化输出时出错
- reactjs - 将具有状态的类组件转换为具有挂钩的功能组件
- unreal-engine4 - 虚幻引擎 (4.25.4) 不再打开项目