我有一个使用自定义 UsernamePasswordValidator 的 WCF 服务。验证器需要访问我的实体框架上下文。
我想为整个服务调用创建一个 ObjectContext,然后在调用结束时销毁/处置它。所以我创建了一个提供此功能的单例静态类,但是,现在发生的情况是,如果两个服务调用同时发生,其中一个调用会释放单例。
我要么保留对 ObjectContext 的本地引用,在这种情况下,使用它的第二个服务将其视为已释放并抛出错误,或者,我在 Singleton 类周围放置一个包装器属性,只要我需要它,然后我的所有更改都会被抛出离开,因为如果另一个调用已处理它,我将获得该对象的一个新实例。
所以基本上我的问题是如何为每个服务调用实例化一个 ObjectContext ?
注意:该实例需要在服务代码和自定义 UsernamePasswordValidator 代码中都可以访问。
我不能只在构造函数中执行此操作或使用 using 语句,因为自定义 UsernamePasswordValidator 无法访问它。有没有办法让每次调用都有一个静态类?这听起来确实不可能,但是解决这个问题的方法是什么?我应该在会话中缓存对象吗?
我的服务托管在 IIS 中。
更新:
所以我已经确定了使用 IExtension 对象在 InstanceContext 中存储状态。但是如何在 UsernamePasswordValidator 中访问当前的 InstanceContext?