首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于wcf静态变量的有关问题

2013-03-04 
关于wcf静态变量的问题在Nunit调用Wcf的方法,该方法最终会调用另外一个程序集的静态方法CreateSession。方

关于wcf静态变量的问题
在Nunit调用Wcf的方法,该方法最终会调用另外一个程序集的静态方法CreateSession。方法如下:

 public class NHibernateHelper
    {
        private static ISessionFactory _sessionFactory;
        private static object _sessionFactoryObj = new object();
        private static ValidatorEngine _tor;
        private static object _torObj = new object();
 
        private NHibernateHelper() { }
        static NHibernateHelper()
        {
            log4net.Config.XmlConfigurator.Configure();
 
            log4net.ILog logger = log4net.LogManager.GetLogger("File");
            logger.Info("自定义记录错误日志:11111111111111111111111111111111111111111111111" + DateTime.Now.ToString());
        }
 
        private static ISessionFactory SessionFactory
        {
            get
            {
                if (_sessionFactory == null)
                {
                    lock (_sessionFactoryObj)
                    {
                        if (_sessionFactory == null)
                        {
                            NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration();
                            cfg.AddAssembly("Com.Richfit.A1.DMS.DataProvider.DataAccess");
                            _sessionFactory = cfg.BuildSessionFactory();
                        }
                    }
                }
 
                return _sessionFactory;
            }
        }
 


        private static ValidatorEngine Tor
        {
            get
            {
                if (_tor == null)
                {
                    lock (_torObj)
                    {
                        if (_tor == null)
                        {
                            _tor = new ValidatorEngine();
                        }
                    }
                }
 
                return _tor;
            }
        }
 
        /// <summary>
        /// 验证实体中的参数是否合法,如果不合法,则抛出异常
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public static bool Validate(object o)
        {
            InvalidValue[] values = Tor.Validate(o);
            if (values.Length == 0)
            {
                return true;
            }
 
            StringBuilder sBuilder = new StringBuilder();
            foreach (InvalidValue value in values)
            {
                sBuilder.Append(value.Message);
            }
            throw new Exception(sBuilder.ToString());
        }
 
        public static ISession CreateSession()
        {


            return SessionFactory.OpenSession();
        }
    }



当然,调用静态方法前,肯定会先调用静态构造的,并且只会有第一次调用。

但我测试后发现,我每次调用WCF后的静态方法后,都会再调用静态构造,请问这个是什么原因?我应该如何配置解决?

因为客户端最终会是SL,所以binding使用的是basicHttpBinding

谢谢
[解决办法]
把静态构造删了


我猜的

热点排行