我在IIS上运行我的应用程序来测试我的服务是否按预期工作。另外,我运行其他内部类操作的单元测试。
以下是我的会话工厂配置:
Fluently.Configure()
.Database(MySQLConfiguration.Standard
.ConnectionString(myconnectionString)
.ShowSql()
)
.CurrentSessionContext<WcfOperationSessionContext>()
//.CurrentSessionContext("call")
.Mappings(m =>
m.FluentMappings
.AddFromAssemblyOf<DtoDifficulty>())
.BuildSessionFactory();
您可以通过 //。CurrentSessionContext(“call”)注意到注释行。当我在IIS上运行我的服务时,我必须使用它上面的行 .CurrentSessionContext&lt; WcfOperationSessionContext&gt;(),当我运行单元测试时, .CurrentSessionContext(“call”)。
有没有办法知道哪个案例正在运行并自动设置其中一个选项?
答案 0 :(得分:0)
我找到了一种选择正确背景的方法。如果我运行单元测试,HttpContext.Current返回null。当我运行我的服务时,它返回一个对象的实例。
以下是代码:
var fluentConfiguration = Fluently.Configure().Database(MySQLConfiguration.Standard
.ConnectionString(myConnectionString)
.ShowSql()
);
var hasHttpContext = HttpContext.Current != null;
if (hasHttpContext)
fluentConfiguration.CurrentSessionContext<WcfOperationSessionContext>();
else
fluentConfiguration.CurrentSessionContext("call");
_sessionFactory = fluentConfiguration
.Mappings(m =>
m.FluentMappings
.AddFromAssemblyOf<DtoDifficulty>())
.BuildSessionFactory();