我正在尝试为在 Azure Web 角色中运行的 WCF 服务初始化我的依赖项注册,但我看到一个非常不寻常的行为,即我的类的静态构造函数被调用了两次。
这是Dependencies
我用作应用程序依赖项的注册表点的类。
public static class Dependencies
{
private static IUnityContainer container;
static Dependencies()
{
Dependencies.container = new UnityContainer();
}
public static IUnityContainer Container
{
get
{
...
}
set
{
...
}
}
public static void ConfigureContainer()
{
var container = new UnityContainer();
// Configure container.
Dependencies.container = container;
}
}
在我的重载中RoleEntryPoint.OnStart()
,我调用了一个静态ConfigureContainer
方法来设置容器,并注册了我的依赖项:
public override bool OnStart()
{
// Configure container for dependency resolution.
Dependencies.ConfigureContainer();
return base.OnStart();
}
我的期望是Dependencies
类的静态成员应该由这段代码初始化,并且可以用于应用程序的组件。
我所看到的(使用断点和 VS2012 调试器)是静态构造函数Dependencies
被调用了两次:一次是在应用程序的原始初始化期间,一次是在第一次请求服务期间。后续请求不会调用静态构造函数(如预期的那样)。
我很想听听为什么运行时会以这种方式运行以及我应该做什么来生成我的静态依赖项注册表的解释。