1

哪个事件最适合在 Unity 中注册类型?

我希望这样做

        iocContainer.RegisterType<ControllerA>();
        iocContainer.RegisterType<ControllerB>();

因此它们可以由 ControllerFactory 从 Unity 容器中检索。

我的意见是在 Application_Start 事件中执行此操作,但有人警告我,我可能会面临由 App 池回收(而不是触发 Application_start)引起的许多问题。所以替代方案是 Session_start。

有什么建议吗?

[更新]

但是如果我使用

iocContainer.RegisterInstance<IService>(service)

如果应用程序池回收或 IIS 被重置会怎样?是否重新创建了服务实例?

4

2 回答 2

2

不,Application_start 是正确的地方。


如果应用程序池或 IIS(或服务器被回收),则无济于事。然后容器会自己回收,但是当应用池重启时,容器会重新配置。

于 2011-05-26T12:20:03.393 回答
2

我认为 PreApplicationStartMethod 是一个更好的地方。

查看这些文章:

http://haacked.com/archive/2010/05/16/three-hidden-extensibility-gems-in-asp-net-4.aspx

http://ilearnable.net/2010/11/22/webactivator-preapplicationstartmethod/

于 2011-05-26T14:38:58.017 回答