问题标签 [lifetime-scoping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
620 浏览

c# - 简单的 Injector 异步生命周期范围和安全异常

我有一个AsyncCommandHandlerDecorator<TCommand>LifetimeScopedCommandHandlerDecorator<TCommand>如下所示:

我像这样注册装饰器:

但是,当异步进程尝试调用时,我收到此错误:

尝试通过安全透明方法“LifetimeScopedCommandHandlerDecorator`1.Handle(!0)”访问安全关键方法“SimpleInjector.SimpleInjectorLifetimeScopeExtensions.BeginLifetimeScope(SimpleInjector.Container)”失败。

我尝试在and上使用SecurityCritical属性,但没有帮助。请问你有什么想法吗?LifetimeScopedCommandHandlerDecorator.HandleAsyncCommandHandlerDecorator.Handle

更新:

异常是类型MethodAccessException,这里是完整的堆栈跟踪:

在 MYNAMESPACE.LifetimeScopedCommandHandlerDecorator`1.Handle(TCommand 命令)

在 MYNAMESPACE.AsyncCommandHandlerDecorator`1.<>c_ DisplayClass1.b _0(Object _)

在 System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(对象状态)

在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,ContextCallback 回调,对象状态,布尔值 preserveSyncCtx)

在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback 回调,对象状态,布尔值 preserveSyncCtx)

在 System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()

在 System.Threading.ThreadPoolWorkQueue.Dispatch()

在 System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

更新 2:

有或没有SecurityCritical属性,问题都存在。

0 投票
3 回答
285 浏览

c# - Autofac 难题

我使用 Autofac 作为我选择的 IoC 容器。这个问题的其余部分指的是 SignalR 与 SignalR 的结合,但不需要真正的 SignalR 知识来回答;这是一个源于 Autofac 的问题。

作为使用 Autofac 作为 SignalR 的依赖解析器的一部分,我想提供我自己的 IJsonSerializer 实例,配置我喜欢的方式。但是,我不想让 IJsonSerializer 实例在软件的其余部分中共享。

为此,我使用附加注册创建了一个新的生命周期范围,并将该范围提供给依赖解析器。这是我的问题开始的时候。

我没有意识到的是,通过这样做,以前从根容器中检索到的 SignalR 请求的每生命周期实例依赖项现在正在从生命周期范围请求,因此在整个 SignalR 中共享。不是很好。例如,短期数据库会话现在在我的应用程序的生命周期内共享。

如何使我的每生命周期实例范围依赖项基本上假装我传递给 SignalR 的生命周期范围不应该用于导致这些依赖项被重用?或者,我怎样才能完全避免创建生命周期范围?

0 投票
3 回答
4167 浏览

c# - 每个匹配生命周期范围的实例,默认?

我想在 Autofac 中为每个匹配的生命周期范围的注册创建一个实例,但偶尔需要从全局容器请求一个实例(其中没有匹配的生命周期范围)。在不存在匹配生命周期范围的情况下,我想提供一个顶级实例而不是抛出异常。

这可能吗?

0 投票
1 回答
700 浏览

asp.net-web-api - Web API 自托管应用程序和 Simple Injector 中的 LifetimeScoping 错误

我阅读了这些(++++)页面,但我不知道该怎么做。

我有这个简单的界面和具体类型:

我创建了这个DependencyResolver

我这样配置我的服务器:

这是我的控制器:

现在,当我调用 action 方法时,我得到了这个错误:

跨线程使用 LifetimeScope 实例是不安全的。确保生命周期范围内的完整操作在同一个线程中执行,并确保 LifetimeScope 实例在创建时被释放在同一个线程上。Dispose 在 ManagedThreadId 28 的线程上调用,但在 id 为 29 的线程上创建。

我在哪里做错了?你能帮忙吗?

0 投票
1 回答
6653 浏览

c# - 可以在注册上指定多个 Autofac 生命周期范围吗?

我将 Autofac IoC 容器与提供 InstancePerHttpRequest 生命周期范围的 MVC4 插件一起使用。但是在我的项目中,我有 web、web-api 和后台工作线程。在下面的示例中,我假设 InstancePerHttpRequest 范围在不是源自 Web 请求时没有多大意义。

我想知道是否可以执行以下示例并让容器选择最合适的生命周期范围?

在这种情况下,我打算发生的是,如果请求来自 Web 请求,那么它将选择 InstancePerHttpRequest 范围,如果它来自 webApi 请求,它将选择 InstancePerApiRequest 范围,如果它被应用程序工作线程使用,它将使用 InstancePerDependency 范围?

如果这个或类似的东西是可能的,有什么想法吗?
谢谢

0 投票
1 回答
1405 浏览

wcf - 带有 SimpleInjector 的 Wcf 抛出“WCF 范围不能嵌套”

服务层分为命令和查询端,每一端都有自己的处理程序。

使用以下配置

以及所需的标记设置:

Factory="SimpleInjector.Integration.Wcf.SimpleInjectorServiceHostFactory, SimpleInjector.Integration.Wcf"

抛出以下异常:

WCF 范围不能嵌套。

我认为错误发生在

WcfOperationScopeManager实施。

一些背景资料:

  • WinForm 应用程序
  • QueryClient 的执行是由后台工作人员完成的
  • 我正在使用 Simple Injector 2.2.3 版
  • 构建容器的 Global.asax
  • 托管在 IIS 中
  • 每个 .svc 都有要使用的标记集SimpleInjectorFactory
  • wsHttpBinding有证书和自定义UserNamePasswordValidator
  • 每个端点配置都将所有需要的值设置为 2147483647。

当我连续快速执行两个加载请求时会发生错误,因此第一个未完成而第二个发生。

0 投票
1 回答
738 浏览

asp.net - asp.net webforms的Autofac生命周期范围问题

我在 asp.net webforms 站点中的请求中持续存在的 autofac 的生命周期范围存在问题。

因此,我在 auto fac 中注册了一家工厂:

这当然发生在 app_start 中。

然后我有一个简单的用户控件调用这个工厂的方法

我在一个页面上有这个控件的两个实例,所以 DoSomething 方法应该被调用两次并且工厂也应该被解析两次。

第一次运行该站点时,DoSomethingFactory 的构造函数被触发,随后对 DoSomething 方法进行了 2 次调用。第二个请求导致对 DoSomething 方法的 2 次调用,而没有对工厂进行全新的更新。

如果我在注册时取出 InstancePerLifetimeScope,那么每次解析都会实例化工厂。我看到的大多数答案都是关于 MVC 站点的。我也有一个 MVC 站点,并以相同的方式使用它,它按要求工作,因此需要询问 asp.net webforms

需要明确的是,我希望每个请求都实例化一次工厂。欢迎任何帮助或想法。

非常感谢

将要

0 投票
1 回答
2272 浏览

autofac - 带有 BeginLifetimeScope 的 Autofac LifetimeScope 不起作用

我正在尝试评估 Autofac 的范围,据我了解,当一个实例被声明为 InstancePerLifetimeScope 时,然后在 using(container.BeginLifetimeScope()) 块中,我们应该得到相同的实例。但是在另一个这样的块中,我们应该得到一个不同的实例。但是我的代码(在 linqpad 中)给了我同样的例子。然而,温莎的lifestylescope正如我认为的那样有效。

代码:

输出是:

也许我对范围的理解是错误的。如果是这样,请您解释一下。

我该怎么做才能在第二个块中获得不同的实例?

0 投票
1 回答
555 浏览

asp.net-mvc-4 - 零星的 LifetimeScope 问题

交叉邮件: https ://orchard.codeplex.com/discussions/471475

有时,我会收到此错误: “无法解析实例,并且无法从此 LifetimeScope 创建嵌套生命周期,因为它已被释放。” 查询某些内容项时。

这是我构建项目的函数:

这是调用上述函数的函数的一部分,有时会显示错误:

它偶尔发生,我无法真正找到问题的原因。任何建议或信息将不胜感激。谢谢!

0 投票
1 回答
54 浏览

c++ - 静态列表中的变量生命周期

此代码在函数内将新对象添加到静态列表。该列表通过引用传递给该函数。

列表中新对象的生命周期是什么?

代码示例:

输出:

问题:

这段代码在内存使用方面安全吗?

什么是“newStruct”生命周期?addStructToList() 还是 Main() ?