.NET 4.5 中的序列化异常

2024-03-26

当我调用时,我得到了这个堆栈跟踪:

XslCompiledTransform.Transform(XmlDocument.DocumentElement.CreateNavigator(), null, StringWriter)


System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.Runtime.Serialization.SerializationException: Type is not resolved for member --MyProject stuff
   at System.AppDomain.GetHostEvidence(Type type)
   at System.Security.Policy.AppDomainEvidenceFactory.GenerateEvidence(Type evidenceType)
   at System.Security.Policy.Evidence.GenerateHostEvidence(Type type, Boolean hostCanGenerate)
   at System.Security.Policy.Evidence.GetHostEvidenceNoLock(Type type)
   at System.Security.Policy.Evidence.RawEvidenceEnumerator.MoveNext()
   at System.Security.Policy.Evidence.EvidenceEnumerator.MoveNext()
   at System.Configuration.ClientConfigPaths.GetEvidenceInfo(AppDomain appDomain, String exePath, String& typeName)
   at System.Configuration.ClientConfigPaths.GetTypeAndHashSuffix(AppDomain appDomain, String exePath)
   at System.Configuration.ClientConfigPaths..ctor(String exePath, Boolean includeUserConfig)
   at System.Configuration.ClientConfigPaths.GetPaths(String exePath, Boolean includeUserConfig)
   at System.Configuration.ClientConfigurationHost.get_HasRoamingConfig()
   at System.Configuration.ClientConfigurationHost.IsConfigRecordRequired(String configPath)
   at System.Configuration.BaseConfigurationRecord.hlNeedsChildFor(String configName)
   at System.Configuration.Internal.InternalConfigRoot.GetConfigRecord(String configPath)
   at System.Configuration.ClientConfigurationSystem.OnConfigRemoved(Object sender, InternalConfigEventArgs e)
   --- End of inner exception stack trace ---
   at System.Configuration.ConfigurationManager.PrepareConfigSystem()
   at System.Configuration.ConfigurationManager.GetSection(String sectionName)
   at System.Xml.XmlConfiguration.XmlReaderSection.get_ProhibitDefaultUrlResolver()
   at System.Xml.XmlTextReaderImpl.get_IsResolverNull()
   at System.Xml.Xsl.QueryReaderSettings..ctor(XmlReader reader)
   at System.Xml.Xsl.Xslt.XsltLoader.Load(Compiler compiler, Object stylesheet, XmlResolver xmlResolver)
   at System.Xml.Xsl.Xslt.Compiler.Compile(Object stylesheet, XmlResolver xmlResolver, QilExpression& qil)
   at System.Xml.Xsl.XslCompiledTransform.LoadInternal(Object stylesheet, XsltSettings settings, XmlResolver stylesheetResolver)
   at System.Xml.Xsl.XslCompiledTransform.Load(XmlReader stylesheet, XsltSettings settings, XmlResolver stylesheetResolver)
   at MyProject

XslCompiledTransform 对象加载使用 GetManifestResourceStream 到嵌入式 .xslt 文件的 XmlReader,但我已确认它正确获取该信息。

我已经仔细研究过它并将其范围缩小到这个电话,但我不知道从这里去哪里。还有其他人经历过吗?

这是在 Windows 8 机器上,但我在 server2008r2 操作系统上体验过


我在 .NET 4.5 中遇到了同样的错误。我只在使用 nunit 2.6+ 时看到错误。当您在子 AppDomain 中初始化 XmlSerializer 并将对象存储在 CallContext 中时,似乎会发生这种情况。如果子 AppDomain 中的 ApplicationBase(bin 路径)设置为不同的内容,则无法解析 CallContext 中的对象类型。您可以在 Fusion Log Viewer 中看到程序集绑定错误:http://msdn.microsoft.com/en-us/library/e74a18c4.aspx http://msdn.microsoft.com/en-us/library/e74a18c4.aspx

就我而言,如果我将包含类型的程序集复制到 nunits bin-path,错误就会消失。这当然不是一个可行的解决方案。

您找到错误的根本原因了吗?

编辑:我通过让类型继承 MarshalByRefObject 来修复它:将项目从 vs2005 迁移到 vs2010 (MSTest) 后,无法在 UnitTest 中解析类型 https://stackoverflow.com/questions/7539557/type-cant-be-resolve-in-unittest-after-migrating-project-from-vs2005-to-vs2010

编辑2:替代修复是在失败的代码之前调用 System.Configuration.ConfigurationManager.GetSection("dummy") 。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 4.5 中的序列化异常 的相关文章

随机推荐