如果由于某种原因未找到数据库,则在尝试从Structuremap中获取NHibernate session 的实例时,是否仍可以在ASP.NET MVC应用程序中正常恢复?
public static class StructureMap
{
private static Configuration Cfg
{
get
{
var configuration = new Configuration().Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "nhibernate.config"));
configuration.SetProperty(NHibernate.Cfg.Environment.ConnectionStringName, "MyConnectionString");
return configuration;
}
}
public static void ConfigureStuctureMap()
{
ObjectFactory.Initialize(x =>
{
x.ForRequestedType<ISessionFactory>()
.CacheBy(InstanceScope.Singleton)
.TheDefault.Is.ConstructedBy(Cfg.BuildSessionFactory);
x.ForRequestedType<ISession>()
.CacheBy(InstanceScope.HttpContext)
.TheDefault.Is.ConstructedBy(c => c.GetInstance<NHibernateSessionFactory>().GetCurrentSession());
});
}
}
现在,应用程序将显示运行时错误YSOD。我在网络配置中有一个自定义静态html错误页面设置,但即使我将自定义错误模式设置为“开”,它也不会显示
最佳答案
捕获所有NHibernate/StructureMap初始化错误,并在无法创建依赖于StructureMap相关依赖项的 Controller 时覆盖 Controller 工厂以处理这种情况。这将允许您处理错误并重定向到既不依赖NHibernate也不依赖于StructureMap的操作/ Controller -从 Controller 工厂或使用[HandleError]属性。
关于asp.net-mvc - 使用Structuremap进行异常处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1751547/