【问题标题】:Creating a proxy instance failed - why this error on Windows server 2012, IIS8 using NHibernate 1.2 and Castle.DynamicProxy 1.1.5?创建代理实例失败 - 为什么在使用 NHibernate 1.2 和 Castle.DynamicProxy 1.1.5 的 Windows server 2012、IIS8 上出现此错误?
【发布时间】:2014-04-23 19:06:53
【问题描述】:

我的公司需要将多个网站从 Windows 2008 服务器移动到 Windows 2012 服务器。数据库:SQL Server 2008 R2 和 2012。

一个使用 NHibernate 1.2.0.4000 和 Castle.DynamicProxy 1.1.5.0 的网站已经完美运行了很长时间。应用程序池设置为 .NET Framework v2.0 og 经典模式。在新服务器上,我们第一次尝试创建持久对象时遇到此错误:

Application_Error: UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko - 名称:InternetExplorer - 版本:11.0 - UserHostAddress:xxx.xxx.xxx.xxx - 例外:系统。 AccessViolationException:试图读取或写入受保护的内存。这通常表明其他内存已损坏。
在 System.Reflection.Emit.TypeBuilder._TermCreateClass(Int32 句柄,模块模块)
在 System.Reflection.Emit.TypeBuilder.CreateTypeNoLock()
在 System.Reflection.Emit.TypeBuilder.CreateType()
在 Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.BuildType()
在 Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.BuildType()
在 Castle.DynamicProxy.Builder.CodeGenerators.BaseCodeGenerator.CreateType()
在 Castle.DynamicProxy.Builder.CodeGenerators.ClassProxyGenerator.GenerateCode(Type baseClass, Type[] 接口)
在 Castle.DynamicProxy.Builder.DefaultProxyBuilder.CreateClassProxy(键入 theClass,Type[] 接口)
在 Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(类型 baseClass,Type[] 接口,IInterceptor 拦截器,Boolean checkAbstract,Object[] argumentsForConstructor)
在 NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session)

消息:创建代理实例失败 - 来源:NKU.Model- TargetSite: System.Object Get(System.Type, System.Object)-
堆栈跟踪:
在 C:\Visual Studio 2008\Projects\NKU.Model\NKU.Model\VZBaseDataAccess.cs:181 行中的 NKU.Model.VZBaseDataAccess.Get(Type type, Object id)
在 c:\inetpub\wwwroot\NKUWeb\Global.asax:line 113 中的 ASP.global_asax.Session_Start(Object sender, EventArgs e)
在 System.Web.SessionState.SessionStateModule.RaiseOnStart(EventArgs e)
在 System.Web.SessionState.SessionStateModule.CompleteAcquireState()
在 System.Web.SessionState.SessionStateModule.BeginAcquireState(对象源,EventArgs e,AsyncCallback cb,对象 extraData)
在 System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

【问题讨论】:

  • 你解决过这个问题吗?

标签: asp.net sql-server visual-studio nhibernate visual-studio-2008


【解决方案1】:

对我来说,以下事情奏效了:

在 IIS 中,转到您的应用程序池并选择高级设置。在那里您会找到一个功能(常规)“启用 32 位应用程序”。选择“真”。 试一试。

【讨论】:

  • 嘿皮尔兹。对不起,我花了这么长时间才回答。现在我已经在第一个网站上尝试了你的解决方案,我可以打开它。我会在这个周末尝试更多并返回。我尝试过的另一个解决方案是升级到 .net 框架和 Nhibernate 的较新版本,这也有效,但需要在 Hhibernate hql 代码中进行大量更新。谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 2021-02-21
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
相关资源
最近更新 更多