【问题标题】:System.AccessViolationException with Dynamic Proxy GenerationSystem.AccessViolationException 与动态代理生成
【发布时间】:2009-10-19 09:24:49
【问题描述】:

我们正在使用 PostSharp 注入缓存功能,我们只在使用它时才看到这个问题。当我们使用 Spring 时,问题似乎消失了。

任何帮助将不胜感激,这个问题很难复制。我在下面包含了堆栈跟踪:

尝试读取或写入受保护的内存。 这通常表明其他内存已损坏。 System.AccessViolationException:试图读取或写入受保护的内存。这通常表明其他内存已损坏。 在 System.Diagnostics.SymbolStore.SymWriter.CloseMethod() 在 System.Reflection.Emit.MethodBuilder.CreateMethodBodyHelper(ILGenerator il) 在 System.Reflection.Emit.TypeBuilder.CreateTypeNoLock() 在 System.Reflection.Emit.TypeBuilder.CreateType() 在 Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType() 在 Castle.DynamicProxy.Generators.ClassProxyGenerator.GenerateCode(Type[] 接口,ProxyGenerationOptions 选项) 在 Castle.DynamicProxy.DefaultProxyBuilder.CreateClassProxy(键入 theClass,Type[] 接口,ProxyGenerationOptions 选项) 在 Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(类型 targetType,Type[] 接口,ProxyGenerationOptions 选项,Object[] constructorArgs,IInterceptor[] 拦截器) 在 Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(类型 targetType,Type[] 接口,IInterceptor[] 拦截器) 在 NHibernate.Proxy.Poco.Castle.CastleProxyFactory.GetProxy(对象 id,ISessionImplementor 会话)

【问题讨论】:

标签: c# aop postsharp access-violation


【解决方案1】:

我遇到了类似的问题,我通过配置解决了: 应用程序池 -> 高级设置 -> '启用 32 位应用程序' 为 True

重新启动 IIS 和网站。

【讨论】:

    【解决方案2】:

    我在我正在处理的项目中发现了一个类似的反复出现的问题,该项目大量使用了 Rhino Mocks。

    在 64 位机器上的 .NET 3.5 中模拟大量不同的接口时会发生这种情况。

    .NET 4.0 beta 似乎没有这个问题。

    【讨论】:

    • 找到这个问题的原因了吗?
    • 在我们的例子中,我们只是编辑了构建脚本以分别运行我们单独的测试程序集,以减少每次测试运行的动态实例化类型的数量,从而降低了问题的可能性。后来我们简单地升级到 .NET 4.0,这似乎完全解决了这个问题。我的猜测是它可能是 MS 反射方法中的非托管代码中的一些错误。
    猜你喜欢
    • 1970-01-01
    • 2010-09-30
    • 2021-04-02
    • 2010-12-17
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    相关资源
    最近更新 更多