我有一个带有代理类的应用程序用于我的webservice - 这在所有32位机器上都能正常工作。但是,相同的应用程序在Windows Server 2008 64位计算机中引发异常。看起来无法为Web服务生成临时类。事件查看器中的错误是“错误CS0008:从文件中读取元数据时出现意外错误” - “错误密钥”。 这是调用堆栈...... 在System.Xml.Serialization.Compiler.Compile(Assembly parent,String ns,XmlSerializerCompilerParameters xmlParameters,Evidence evidence) 在System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping [] xmlMappings,Type [] types,String defaultNamespace,Evidence evidence,XmlSerializerCompilerParameters parameters,Assembly assembly,Hashtable assemblies) 在System.Xml.Serialization.TempAssembly..ctor(XmlMapping [] xmlMappings,Type [] types,String defaultNamespace,String location,Evidence evidence) 在System.Xml.Serialization.XmlSerializer.GetSerializersFromCache(XmlMapping []映射,类型类型) 在System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping []映射,类型类型) 在System.Web.Services.Protocols.SoapClientType..ctor(类型类型) 在System.Web.Services.Protocols.SoapHttpClientProtocol..ctor() 在Fusion.ServiceCatalogProxy..ctor()
我无法获得有关此错误密钥错误的任何信息....
答案 0 :(得分:0)
看起来您引用的程序集之一是corrupted。
答案 1 :(得分:0)
如果您的构建配置类型是“AnyCPU”,那么有时访问那些仅适用于32位接口的com对象有时会产生问题,请尝试使用x86重新构建您的应用程序/项目,然后在64位机器上任何32位程序将起作用完全相同。
通过查看错误,我可以看到在64位机器上,临时文件夹可能放在不同的位置,而你的32位程序找不到它。