我一直在玩 Spring.NET 2.0.0M1 对 ASP.NET MVC4 的支持。虽然很有希望,但我认为我遇到了一个关键问题:为每个命中创建一个新的 MvcApplicationContext(使用 MVC4 的 WebApi 时)。虽然我相信这样做的目的是支持额外的范围,但我到目前为止所做的调试表明,新的 MvcApplicationContext 是使用整个应用程序的 WebApplicationContext 作为父 ApplicationContext 创建的,并被赋予与父级相同的配置位置。因此,这个新的子 MvcApplicationContext 加载相同的配置位置并重新创建所有对象,包括所有单例,并且从不委托给父上下文。这有效地使单例无法使用,并有效地将所有内容绑定到请求范围(或更低)。
创建新 MvcApplicationContext 的相关代码现在是 master 中 Spring.Web.Mvc4/SpringWebApiDependencyResolver.cs 的第 43 到 52 行。
我没有足够的 Spring.NET 经验来知道正确的修复/解决方法是什么,但如果有人有想法,我愿意尝试。如果同意这是一个错误,我很乐意提出一个问题。
我可能最终犯了一个错误,但我已经将它与样本进行了比较,并没有发现明显的问题。