WCF服务 - 单实例 - 静态构造函数

时间:2013-01-02 16:41:01

标签: wcf c#-4.0 static-libraries static-members

只想确认我的理解是正确的。如果我将单实例模式用于服务:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]

并且此服务从另一个具有静态构造函数的asssembly调用一个类,该构造函数仅在第一次调用此类服务​​时被调用?我正在谈论的构造函数设置了相当数量的AutoMapper映射,我只是在第一次调用服务时才想要这种开销。

进一步说,如果我有两个不同的服务,并且它们都是共享类,我是否正确静态构造函数仍然只被调用一次?

最佳

1 个答案:

答案 0 :(得分:0)

InstanceContextMode与触发静态构造函数的次数之间没有任何关联。每个Application Domain调用一次静态构造函数。因此,如果您的服务托管在一个应用程序域中,那么您的构造函数将被调用一次。 据我所知,你使用构造函数来注册AutoMapper配置......对我而言,这不是一个好方法。假设您的服务托管在IIS上,您最好创建一个Global.asax文件,然后在Application_Start方法中运行映射注册代码。对于cource,你可以先用一些静态方法将它包装起来。

希望它有所帮助!