升级到ASP.NET Core 3后通过OAuth进行身份验证时会丢失MissingMethodException

我正在尝试将ASP.NET Core应用程序从2.2升级到3.0。它使用OAuth来通过第三方API进行身份验证。它在本地运行良好,但是当我在服务器上运行它时,会生成以下异常:

  

失败:microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware [1]
       执行请求时发生未处理的异常。   System.Exception:处理远程登录时遇到错误。
  ---> System.MissingMethodException:找不到方法:“ Newtonsoft.Json.Linq.JObject> microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.get_Response()”。

我不确定如何调试它,或者在这里提供其他有用的信息。有谁知道如何找出问题所在?

fancykee 回答:升级到ASP.NET Core 3后通过OAuth进行身份验证时会丢失MissingMethodException

身份验证发生在类库中,并且仍在引用Microsoft.AspNetCore.Authentication.OAuthMicrosoft.AspNetCore.Authentication.Cookies。版本2.2。我收到的错误是因为在.NET Core 3中,OAuthTokenResponse.Response已更改为使用System.Text.Json而不是Newtonsoft。我猜在开发机器上,它加载了旧版本的Microsoft.AspNetCore.Authentication.OAuth,而在生产环境中,它加载了新版本。

不幸的是,Microsoft.AspNetCore.Authentication.OAuth的最新版本尚未作为单独的软件包提供(至少在撰写本文时)。为了使用它,我必须对我的类库进行以下更改:

  • 将其更改为目标netcoreapp3.0而不是netstandard2.0
  • 删除对Microsoft.AspNetCore.Authentication.OAuthMicrosoft.AspNetCore.Authentication.Cookies的引用
  • FrameworkReference添加到Microsoft.AspNetCore.App

一旦进行了这些更改,身份验证就会再次在生产环境中起作用。

,

就我而言,我需要Google和Microsoft服务帐户(以dot net core 3.0):

  1. 删除(或卸载)Microsoft.AspNetCore.Authentication.OAuth Nuget程序包
  2. 添加(或安装)OAuth2 Nuget程序包
  3. 添加Microsoft.AspNetCore.Authentication.Google Nuget程序包
  4. 添加Microsoft.AspNetCore.Authentication.MicrosoftAccount Nuget 包装

它现在正在工作。

本文链接:https://www.f2er.com/3115657.html

大家都在问