【问题标题】:Exception Handling with Structuremap使用 Structuremap 处理异常
【发布时间】:2010-12-17 14:48:18
【问题描述】:

当我尝试从 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。我在 Web 配置中有一个自定义静态 html 错误页面设置,但即使我将自定义错误模式设置为“开”,它也不会显示

【问题讨论】:

    标签: asp.net-mvc error-handling structuremap


    【解决方案1】:

    捕获任何 NHibernate/StructureMap 初始化错误,并覆盖您的控制器工厂以处理无法创建依赖于 StructureMap 相关依赖项的控制器的情况。这将允许您处理错误并重定向到既不依赖于 NHibernate 也不依赖于 StructureMap 的动作/控制器 - 无论是来自控制器工厂还是使用 [HandleError] 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多