将 ASP.NET MVC NHibernate 应用程序部署到 IIS7 时出错

Posted

技术标签:

【中文标题】将 ASP.NET MVC NHibernate 应用程序部署到 IIS7 时出错【英文标题】:Error when deploying ASP.NET MVC NHibernate app to IIS7 【发布时间】:2009-05-04 20:34:47 【问题描述】:

我有一个在 vs.net 开发 Web 服务器中工作的 Asp.Net MVC 应用程序。当我发布到 IIS7 时,出现以下错误。我花了好几个小时,仍然没有解决办法!

 [NullReferenceException: Object reference not set to an instance of an object.]
   System.Web.PipelineStepManager.ResumeSteps(Exception error) +929
   System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb) +91
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +508

这里是 Application_Start

protected void Application_Start()
        


                ConfigureLogging();


                ComponentRegistrar.RegisterComponents();


                NHibernateSession.InitSqlServer2005(new WebSessionStorage(this), Settings.Default.DefaultConnString);


                CacheManager.InitCaches();

            
        

我来晚了,不知道 MVC 和 NHibernate 的最佳实践

【问题讨论】:

【参考方案1】:

您不能在应用程序启动时配置休眠。我不知道为什么,但我也遇到了这个问题。

您可以在 Init() 中对其进行初始化。你也可以看到它在这里完成 http://code.google.com/p/sharp-architecture/source/checkout

【讨论】:

我只是这个,但在一个模块中 您好 Trilibit,我们在 Entity Framework 初始化操作中遇到了同样的问题)【参考方案2】:

将我的休眠初始化代码从 Application_Start() 移动到 Init() 仍然没有运行足够晚来修复错误。所以我偶然发现了this。我使用的解决方案不是来自原始帖子,而是来自 jbland 的第一条评论。基本上,它会将 nhibernate 的初始化移动到第一个请求时发生。

需要注意的一点是,他的代码没有为您提供 webSessionStorage 来自何处的上下文。它是一个成员变量,必须在 Init() 中实例化。

【讨论】:

以上是关于将 ASP.NET MVC NHibernate 应用程序部署到 IIS7 时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET MVC 应用程序中管理和部署架构(使用 NHibernate)

ASP.NET MVC 3 和 NHibernate 脚手架

ASP.NET MVC+WCF+NHibernate+Autofac 框架组合

在 ASP.NET MVC 4 NHibernate 应用程序中使用 SessionFactory 获取连接

如何在 asp.net mvc 3 应用程序中管理视图管理

asp.net mvc 应用程序中的工作单元模式