Asp.net core 无法解析具有Asp.Net核心作用域依赖项的规则

Asp.net core 无法解析具有Asp.Net核心作用域依赖项的规则,asp.net-core,nrules,Asp.net Core,Nrules,我运行示例时遇到以下错误 我想将服务注入到规则中 请注意,相同的服务被注入到 我已将此IPersonService注册为类中的作用域服务 我用了这个,得到了错误。所以为了了解更多,我把它的来源包括在我的文章中 如何在请求作用域中注册服务,以便将该服务注入到规则中,并具有相同的作用域?这可能吗 我理解该规则不能在请求范围内。该规则在应用程序开始时实例化,然后在所有请求的剩余生命周期中使用该规则。我希望服务依赖项位于请求范围内,这意味着服务将针对每个新请求重新实例化。这可能吗 但我想每个请求都会重新

我运行示例时遇到以下错误

我想将服务注入到规则中

请注意,相同的服务被注入到

我已将此IPersonService注册为类中的作用域服务

我用了这个,得到了错误。所以为了了解更多,我把它的来源包括在我的文章中

如何在请求作用域中注册服务,以便将该服务注入到规则中,并具有相同的作用域?这可能吗

我理解该规则不能在请求范围内。该规则在应用程序开始时实例化,然后在所有请求的剩余生命周期中使用该规则。我希望服务依赖项位于请求范围内,这意味着服务将针对每个新请求重新实例化。这可能吗

但我想每个请求都会重新创建

到目前为止,我还不能令人满意地将NRules集成到AspNetCore项目中。我研究这一点也是为了了解如何整合,但面临着类似的问题。如果有任何显示如何集成的aspnet核心演示项目,请分享

我错过了什么

重现问题的方法在这里供您参考

 NRules.RuleRhsExpressionEvaluationException
   HResult=0x80131500
   Message=Failed to evaluate rule action
 (ctx, serviceProvider) => WriteLine(Convert(Convert(serviceProvider.GetService(NRulesWithAspNetCore.Services.IPersonService), IPersonService).Id, Object))
 NRulesWithAspNetCore.Rules.MalePersonRule
   Source=NRules
   StackTrace:
    at NRules.ActionExecutor.Execute(IExecutionContext executionContext, IActionContext actionContext)
    at NRules.Session.Fire(Int32 maxRulesNumber, CancellationToken cancellationToken)
    at NRules.Session.Fire(CancellationToken cancellationToken)
    at NRules.Session.Fire()
    at NRulesWithAspNetCore.Controllers.HomeController.Index() in D:\Trials\WorkFlow\ElsaBugReports\src\NR1003002NRulesAspNetCore\NR1003002NRulesAspNetCore\Controllers\HomeController.cs:line 46
    at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<<InvokeActionMethodAsync>g__Logged|12_1>d.MoveNext()
 
   This exception was originally thrown at this call stack:
     [External Code]
 
 Inner Exception 1:
 InvalidOperationException: Cannot resolve scoped service 'NRulesWithAspNetCore.Services.IPersonService' from root provider.
 
NRules.RuleRhsExpressionEvaluationException
HResult=0x80131500
消息=无法评估规则操作
(ctx,serviceProvider)=>WriteLine(Convert(Convert(serviceProvider.GetService(NRulesWithAspNetCore.Services.IPersonService),IPersonService.Id,Object))
NRulesWithAspNetCore.Rules.MalePersonRule
来源=规则
堆栈跟踪:
在NRules.ActionExecutor.Execute(IExecutionContext executionContext,IActionContext actionContext)
在NRules.Session.Fire(Int32 maxRulesNumber,CancellationToken CancellationToken)
在NRules.Session.Fire(CancellationToken CancellationToken)
在NRules.Session.Fire()上
在D:\Trials\WorkFlow\ElsaBugReports\src\nr1003002RulesAspnetcore\nr1003002RulesAspnetcore\Controllers\HomeController.Index()中的NRulesWithAspNetCore.Controllers.HomeController.Index()处:第46行
位于Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper映射器、ObjectMethodExecutor执行器、对象控制器、对象[]参数)
在Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.d.MoveNext()中
此异常最初是在此调用堆栈中引发的:
[外部代码]
内部异常1:
InvalidOperationException:无法从根提供程序解析作用域服务“NRulesWithAspNetCore.Services.IPersonService”。
 NRules.RuleRhsExpressionEvaluationException
   HResult=0x80131500
   Message=Failed to evaluate rule action
 (ctx, serviceProvider) => WriteLine(Convert(Convert(serviceProvider.GetService(NRulesWithAspNetCore.Services.IPersonService), IPersonService).Id, Object))
 NRulesWithAspNetCore.Rules.MalePersonRule
   Source=NRules
   StackTrace:
    at NRules.ActionExecutor.Execute(IExecutionContext executionContext, IActionContext actionContext)
    at NRules.Session.Fire(Int32 maxRulesNumber, CancellationToken cancellationToken)
    at NRules.Session.Fire(CancellationToken cancellationToken)
    at NRules.Session.Fire()
    at NRulesWithAspNetCore.Controllers.HomeController.Index() in D:\Trials\WorkFlow\ElsaBugReports\src\NR1003002NRulesAspNetCore\NR1003002NRulesAspNetCore\Controllers\HomeController.cs:line 46
    at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<<InvokeActionMethodAsync>g__Logged|12_1>d.MoveNext()
 
   This exception was originally thrown at this call stack:
     [External Code]
 
 Inner Exception 1:
 InvalidOperationException: Cannot resolve scoped service 'NRulesWithAspNetCore.Services.IPersonService' from root provider.