我正在从Application_Start事件中初始化FluentNHibernate,如下所示:
Fluently.Configure()
.Database(OracleDataClientConfiguration.Oracle10
.Driver<NHibernate.Driver.OracleDataClientDriver>()
.ConnectionString("MyConnectionString")
.DefaultSchema("MySchema")
)
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<SomeClass>())
.BuildConfiguration()
.BuildSessionFactory();
如果连接字符串错误,或者由于某些其他原因导致与DB的连接失败,我会收到TNS No listener
异常。我想显示/记录此异常,但Application_Start(和Applicaiton_Error)在IIS7集成模式下没有HttpContext或Response对象。用户获得一个黄色的死亡屏幕告诉他们打开自定义错误。 Elmah也没有记录消息。我想以两种可能的方式解决问题:
我能够将NHibernate配置移动到Session_Start上运行,如described here,它为此错误获取异常处理,但后来我得到了其他可能误导问题根本原因的异常。有没有人有这个场景的好解决方案?
谢谢。
答案 0 :(得分:2)
这就是我的所作所为:
void Application_Start() {
try {
// setup your app / nhibernate
} catch(Exception ex) {
Application["StartupError"] = ex
}
}
void Application_BeginRequest() {
var startupError = Application["StartupError"] as Exception;
if (startupError != null)
throw new Exception("Error starting application", startupError);
}
在您的BeginRequest方法中,您可以访问请求并可以执行您想要显示的错误(或显示一个不错的页面)