C# NHibernate-创建代理实例失败(在IIS8上,但在开发服务器上可以)

C# NHibernate-创建代理实例失败(在IIS8上,但在开发服务器上可以),c#,iis,nhibernate,.net-2.0,C#,Iis,Nhibernate,.net 2.0,我必须致力于已经开发的解决方案,该解决方案使用NHibernate(v1.2.1.4000)和SQL Server 2008 由于成员身份验证和其他原因,应用程序正在使用.NET Framework 2.0 这是在Visual Studio中工作的-我可以调试它,在中运行。但在IIS(v8.0)中部署时失败 例外情况是: 程序集中存在重复的类型名称。 HibernateeException:创建代理实例失败 每当获取数据库以获取一些模型时,就会发生这种情况 我在谷歌上搜索了这个问题,并对使用nh

我必须致力于已经开发的解决方案,该解决方案使用NHibernate(v1.2.1.4000)和SQL Server 2008

由于成员身份验证和其他原因,应用程序正在使用.NET Framework 2.0

这是在Visual Studio中工作的-我可以调试它,在中运行。但在IIS(v8.0)中部署时失败

例外情况是:

程序集中存在重复的类型名称。
HibernateeException:创建代理实例失败

每当获取数据库以获取一些模型时,就会发生这种情况

我在谷歌上搜索了这个问题,并对使用nhiberante(v3.3.x)提出了一些建议

但是v3中的许多接口和方法参数是不同的。因此,它打破了源代码的实现


stackoverflow上存在一些与此相关的问题,但还不走运

也许您遇到了并发问题,比如单例初始化无法确保其初始化的唯一性,只在负载下发生

特别是检查你的会话工厂。在构建它时放置日志,检查它是否多次未构建。如果尚未从应用程序启动触发单例初始化,请尝试从应用程序启动触发单例初始化


避免单例惰性初始化,除非它们非常繁重,并且大多数应用程序HTTP请求都不需要。在这种情况下,请确保它们的逻辑是线程安全的,并避免运行并发初始化(类似于
ExecutionAndPublication
而不是
PublicationOnly
:它需要更严格的锁定,但如果是通过延迟初始化完成的,则必须以这种方式构建
ISessionFactory

使用VS进行调试时,是使用旧的Cassini dev服务器还是使用IIS Express?如果尚未完成调试,请切换到IIS Express进行调试。@Frédéric,谢谢。它正在使用IIS Express。这是NHibernate中的一个错误,建议使用NHibernate 3或更多。我已经将解决方案升级到CLR v4,并使用NHibernate 4。但是现在castle(v3.0.0)无法工作,因为castle.facilities不支持v3。castle在版本3之前是为NHibernate配置的常用代理生成器。NHibernate v3和更高版本嵌入了自己的代理生成器,不再需要外部代理生成器。