我也有完全相同的问题,使用 ServiceStack 版本 4.5.6
这是我的注册代码
container.RegisterAutoWiredAs<EventConditionalLoadingRepository, IEventConditionalLoadingRepository>()
.ReusedWithin(ReuseScope.Request);
container.RegisterAutoWiredAs<MetaRiskRepository, IMetaRiskRepository>()
.ReusedWithin(ReuseScope.Request);
container.RegisterAutoWiredAs<RiskStoreConnectivityService, IRiskStoreConnectivityService>()
.ReusedWithin(ReuseScope.Request);
container.Register<IUnitOfWork>(c =>
{
return new UnitOfWork();
}).ReusedWithin(ReuseScope.Request);
container.Register(c => (IUnitOfWorkEnlistable)c.Resolve<IUnitOfWork>())
.ReusedWithin(ReuseScope.Request);
这是我的服务,它需要这些依赖项
public AnalysisServiceStackService(
IEventConditionalLoadingRepository eventConditionalLoadingRepository,
IMetaRiskRepository metaRiskRepository,
IUnitOfWork unitOfWork)
{
_eventConditionalLoadingRepository = eventConditionalLoadingRepository;
_metaRiskRepository = metaRiskRepository;
_unitOfWork = unitOfWork;
_log.Information("AnalysisServiceStackService constructed");
}
您可以看到我在那里有一个日志语句,当我通过邮递员访问此服务以进行顺序请求时,我会记录此类事情
2017-03-30 15:34:10 [Information] AnalysisServiceStackService constructed
2017-03-30 15:34:11 [Information] AnalysisServiceStackService constructed
2017-03-30 15:34:12 [Information] AnalysisServiceStackService constructed
2017-03-30 15:34:13 [Information] AnalysisServiceStackService constructed
2017-03-30 15:34:14 [Information] AnalysisServiceStackService constructed
2017-03-30 15:34:15 [Information] AnalysisServiceStackService constructed
2017-03-30 15:34:16 [Information] AnalysisServiceStackService constructed
2017-03-30 15:34:17 [Information] AnalysisServiceStackService constructed
所以我知道服务本身应该尝试解析它需要的 IOC 组件的新 PerRequest 实例。
如果我然后使用 Visual Studio 并使用调试“生成对象 ID”功能来检查 IOC 容器给我的内容,它们是同一个实例。
呼叫 1:第一个请求
查看由 Visual Studio 创建的 #1 对象 ID

呼叫 2:第二个请求
请参阅#1 对象 ID,这意味着它不应该是同一个实例。它应该是新请求的新实例

并且只是为了证明这些是不同的调用,这里是构造函数运行两次的日志,每个请求一次

唯一为我解决这个问题的是Reuse.None的建议修复
但如果我必须这样做,我不妨只使用 AutoFac 适配器(无论如何我更愿意使用)并使用标准 AutoFac INstancePerLifeTimeScope:http ://docs.autofac.org/en/latest/lifetime/instance- scope.html#instance-per-lifetime-scope
有任何想法吗?