2011-05-15 46 views
0

我在Windows Azure的顶部构建了一个REST WCF应用程序。在localhost中,我可以很好地连接和使用NHibernate的SQL Azure,但每当我尝试将应用程序移动到Windows Azure时,它都无法加载所需的DLL以使NHibernate正常工作。Nhibernate和Windows Azure

我见过论坛说如果NHibernate DLL是用x86 target编译的,而且自从Windows Azure在x64上运行以后,可能会出现这个问题,我试图将我的编译目标修改为x64(尽管我是运行Windows 7 x86)。

它显示的问题是

服务器遇到错误 处理请求。 消息的异常是“无法加载类型 ”NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle' 配置代理工厂类。 可能的原因有: - 未部署的是 NHibernate.Bytecode提供程序集合 。 - 使用typename 初始化 会话工厂部分的'proxyfactory.factory_class'属性 不是 格式良好。解决方案:确认 您的部署文件夹包含以下程序集中的一个: NHibernate.ByteCode.LinFu.dll NHibernate.ByteCode.Castle.dll'。有关更多详细信息,请参阅 服务器日志。

有没有人见过这个错误?我该如何解决这个问题?

+0

这听起来像你错过了在部署一个DLL。这有帮助吗? http://stackoverflow.com/questions/1913504/nhibernate-unable-to-load-proxy-factory – Stuart 2011-05-15 20:09:44

+0

这是同样的问题,但我真的不知道如何检查复制到Azure存储进行部署的DLL。 – jpabluz 2011-05-15 20:18:12

回答

0

嗯,事实证明,这并没有任何与天青,运行它相当费力。

为了使这个工作,我不得不破解msbuild进程,谁是“聪明”足以离开城堡dll。如上所述,这不应该是一个永久性的修复,因为您需要修改msbuild配置,以便它包含所需的dll。我只是不知道该怎么做,也许在StackOverflow的天才可以帮助我们。

这是博客文章,帮助我,与你分享以供将来参考:

http://weblogs.asp.net/srkirkland/archive/2009/10.aspx

0

您是否在项目中所有引用程序集的属性中设置了“copy local”?

+0

是的,所有的nHibernate的dll的复制本地设置为True。 Microsoft Dll已将复制本地设置为False。 – jpabluz 2011-05-15 20:16:46

0

因为它是同样的问题NHibernate unable to load Proxy Factory,则:

  • 检查NHibernate.ByteCode.LinFu.dll或NHibernate.ByteCode.Castle.dll之一是通过你的项目中引用
  • 保证“复制本地”是真的对DLL