gpt4 book ai didi

c# - WCF 服务引用使用 XmlSerializer 创建临时动态程序集

转载 作者:太空宇宙 更新时间:2023-11-03 15:42:52 25 4
gpt4 key购买 nike

我一直在尝试诊断我认为有据可查的内存泄漏,其中可执行文件的内存大小由于 WCF 服务引用(或旧式 Web 引用)而增加,因为它会动态创建动态临时程序集一个 XmlSerializer

我找到了以前的 stackoverflow 帖子 here它还提供了this link其中比较详细地描述了这个问题。

它不提供有关如何缓存 XmlSerializer/MessageTypeConverter 以防止创建这些动态程序集的任何想法。

所以我的问题是 - 当序列化发生在 WCF/.NET 基础结构层的深处时,如何防止 XmlSerializer 生成动态程序集?

感兴趣的是,这里是程序集的完整堆栈跟踪(由 ANTS 内存分析器提供:

System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(string name)
System.Xml.Serialization.CodeGenerator.CreateModuleBuilder(Emit.AssemblyBuilder assemblyBuilder, string name)
System.Xml.Serialization.TempAssembly.GenerateRefEmitAssembly(Serialization.XmlMapping[] xmlMappings, Type[] types, string defaultNamespace, Policy.Evidence evidence)
System.Xml.Serialization.TempAssembly..ctor(Serialization.XmlMapping[] xmlMappings, Type[] types, string defaultNamespace, string location, Policy.Evidence evidence)
System.Xml.Serialization.XmlSerializer.GenerateTempAssembly(Serialization.XmlMapping xmlMapping, Type type, string defaultNamespace, string location, Policy.Evidence evidence)
System.Xml.Serialization.XmlSerializer..ctor(Type type, Serialization.XmlAttributeOverrides overrides, Type[] extraTypes, Serialization.XmlRootAttribute root, string defaultNamespace, string location, Policy.Evidence evidence)
System.Xml.Serialization.XmlSerializer..ctor(Type type, Serialization.XmlAttributeOverrides overrides, Type[] extraTypes, Serialization.XmlRootAttribute root, string defaultNamespace, string location)
System.Xml.Serialization.XmlSerializer..ctor(Type type, Serialization.XmlRootAttribute root)

编辑:我还应该提一下,我知道这个 MSDN article ,但是即使这样,我的可执行文件内存也会增加(使用上面的配置文件),因此无论出于何种原因,MyLIbrary.XmlSerializers.dll 似乎都没有被使用,或者正在使用,但没有被缓存。

最佳答案

事实证明,在我们的代码中有一个使用 attributeroot 构造函数重载来实例化新 XmlSerializer 的显式调用。更正此问题解决了我们的问题。

我们还设法找到一种方法来手动覆盖在创建操作行为的 wcf 中使用的 XmlSerializer。

关于c# - WCF 服务引用使用 XmlSerializer 创建临时动态程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29510076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com