在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谢谢
{
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谢谢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货