尝试从适配器'NetCoreContainerAdapter'解析服务'System.Boolean'时出错



最近转换到.NET Core后,我在尝试使用我们的任何AuthProviders进行身份验证时遇到以下错误:

";尝试从适配器"NetCoreContationrAdapter"解析服务"System.Boolean"时出错:对象引用未设置为对象的实例">

我在.NET Core 3.1上使用ServiceStack.Core 5.9.2。

堆栈跟踪

at Funq.Container.GetEntry[TService,TFunc](String serviceName, Boolean throwIfMissing) in C:BuildAgentwork3481147c480f4a2fsrcServiceStackFunqContainer.cs:line 490
at Funq.Container.ResolveImpl[TService](String name, Boolean throwIfMissing) in C:BuildAgentwork3481147c480f4a2fsrcServiceStackFunqContainer.cs:line 183
at Funq.Container.TryResolveNamed[TService](String name) in C:BuildAgentwork3481147c480f4a2fsrcServiceStackFunqContainer.Overloads.cs:line 389
at Funq.Container.TryResolve[TService]() in C:BuildAgentwork3481147c480f4a2fsrcServiceStackFunqContainer.Overloads.cs:line 336
at Funq.Container.<>c__DisplayClass16_0`4.<ReverseLazyResolve>b__1(TArg1 a1, TArg2 a2, TArg3 a3) in C:BuildAgentwork3481147c480f4a2fsrcServiceStackFunqContainer.Adapter.cs:line 125
at ServiceStack.Auth.AuthProvider.IsAccountLocked(IAuthRepository authRepo, IUserAuth userAuth, IAuthTokens tokens) in C:BuildAgentwork3481147c480f4a2fsrcServiceStackAuthAuthProvider.cs:line 359
at Authentication.AuthUtilities.HandleSuccessfulTryAuthenticate(CredentialsAuthProvider authProvider, IServiceBase authService, User user, IDbConnection db) in AuthUtilities.cs:line 100
at Authentication.AuthProviders.SgCredentialsAuthProvider.TryAuthenticate(IServiceBase authService, String userName, String password) in SGCredentialsAuthProvider.cs:line 31
at ServiceStack.Auth.CredentialsAuthProvider.Authenticate(IServiceBase authService, IAuthSession session, String userName, String password, String referrerUrl) in C:BuildAgentwork3481147c480f4a2fsrcServiceStackAuthCredentialsAuthProvider.cs:line 120
at ServiceStack.Auth.CredentialsAuthProvider.Authenticate(IServiceBase authService, IAuthSession session, Authenticate request) in C:BuildAgentwork3481147c480f4a2fsrcServiceStackAuthCredentialsAuthProvider.cs:line 98
at ServiceStack.Auth.AuthenticateService.Authenticate(Authenticate request, String provider, IAuthSession session, IAuthProvider oAuthConfig) in C:BuildAgentwork3481147c480f4a2fsrcServiceStackAuthAuthenticateService.cs:line 413
at ServiceStack.Auth.AuthenticateService.Post(Authenticate request) in C:BuildAgentwork3481147c480f4a2fsrcServiceStackAuthAuthenticateService.cs:line 218

您的SgCredentialsAuthProvider在国际奥委会注册了吗?它只应该作为AuthProvider添加到您的AuthFeature插件注册中。

该错误表明您有一个自动连接的服务或具有公共bool属性或构造函数的依赖项,该属性或构造函数正试图注入从IsAccountLocked((方法调用的不存在的bool依赖项:

public virtual bool IsAccountLocked(IAuthRepository authRepo, IUserAuth userAuth, IAuthTokens tokens=null)
{
if (AccountLockedValidator != null)
return AccountLockedValidator(authRepo, userAuth, tokens);

return userAuth?.LockedDate != null;
}

从其执行情况来看,国际奥委会正试图解决国际奥委会提出的AccountLockedValidator的每个通用论点,但在bool通用论点上失败了:

public Func<IAuthRepository, IUserAuth, IAuthTokens, bool> AccountLockedValidator { get; set; }

删除SgCredentialsAuthProvider的IOC注册,或者如果你正在进行依赖项的自动扫描/自动布线,则忽略它应该可以解决这个问题。

相关内容

最新更新