我的公司需要将多个网站从Windows 2008服务器移动到Windows 2012服务器。数据库:SQL Server 2008 R2和2012.
使用NHibernate 1.2.0.4000和Castle.DynamicProxy 1.1.5.0的网站已经使用了很长时间。应用程序池设置为.NET Framework v2.0和经典模式。在新服务器上,我们在第一次尝试创建持久对象时收到此错误:
Application_Error:UserAgent:Mozilla / 5.0(Windows NT 6.1; WOW64; Trident / 7.0; rv:11.0),如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(类型baseClass,Type []接口)
在Castle.DynamicProxy.Builder.DefaultProxyBuilder.CreateClassProxy(键入theClass,Type []接口)
在Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(类型baseClass,Type []接口,IInterceptor拦截器,布尔checkAbstract,Object [] argumentsForConstructor)
在NHibernate.Proxy.CastleProxyFactory.GetProxy(对象id,ISessionImplementor会话)消息:创建代理实例失败 - 来源:NKU.Model- TargetSite:System.Object Get(System.Type,System.Object) -
堆栈跟踪:
at NKU.Model.VZBaseDataAccess.Get(Type type,Object id)在C:\ Visual Studio 2008 \ Projects \ NKU.Model \ NKU.Model \ VZBaseDataAccess.cs:第181行
at ASP.global_asax.Session_Start(Object sender,EventArgs e)位于c:\ inetpub \ wwwroot \ NKUWeb \ Global.asax:第113行
在System.Web.SessionState.SessionStateModule.RaiseOnStart(EventArgs e)
在System.Web.SessionState.SessionStateModule.CompleteAcquireState()
在System.Web.SessionState.SessionStateModule.BeginAcquireState(对象源,EventArgs e,AsyncCallback cb,Object extraData)
在System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)
答案 0 :(得分:0)
对我来说,下面的事情是有效的:
在IIS中,转到应用程序池并选择高级设置。在那里你会发现一个功能(通用)'启用32位应用程序'。选择“真实”。 试一试。