asp.net - 我在使用asp.net core 2.2应用程序的生产上的facebook登录回调中收到错误500

标签 asp.net asp.net-core deployment error-handling

我的问题主要仅在将应用程序部署在smarterasp.net托管上之后出现。

当尝试登录到Facebook时,将我重定向到Facebook,然后在我接受返回到应用程序所需的权限后,出现了500错误页面
.../身份/帐户/外部登录?处理程序=回调#=

我试图查看日志,但是即使手动创建了logs文件夹也没有日志出现。

我试图对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();
        }
    }

最佳答案

没问题,但是我发布的内置文件有些未完成,有些 Controller 正在缓存参数,但是从Facebook重定向后,缓存就被清除了,并且出现了问题。

关于asp.net - 我在使用asp.net core 2.2应用程序的生产上的facebook登录回调中收到错误500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57331176/

相关文章:

详细信息 View 中的 ASP.NET 日期格式

asp.net - 在 .cshtml 页面上显示所有 session 变量

c# - 在 C# 中处理日期

macos - OS X 终端在运行 "source kvm.sh"后挂起安装 vNext KVM

c# - 无法从 IdentityServer4 获取配置

c# - 带参数的 AutoMapper 依赖注入(inject)

iOS企业OTA分发问题

c# - Asp.Net MVC 中强类型 View 数据到底是什么

c++ - Qt 版本不显示图像

java - 部署定义困惑