I have an application with a proxy class for my webservice - This works fine in all 32-bit machines. However the same app throws an exception in windows server 2008 64-bit machine. It looks like the temporary class could not be generated for the web service. The error in the event viewer is "error CS0008: Unexpected error reading metadata from file '' -- 'Bad Key. ' Here's the call stack... at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCo开发者_C百科mpilerParameters xmlParameters, Evidence evidence) at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies) at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence) at System.Xml.Serialization.XmlSerializer.GetSerializersFromCache(XmlMapping[] mappings, Type type) at System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[] mappings, Type type) at System.Web.Services.Protocols.SoapClientType..ctor(Type type) at System.Web.Services.Protocols.SoapHttpClientProtocol..ctor() at Fusion.ServiceCatalogProxy..ctor()
I am not able to get any info about this bad key error....
It looks like one of your referenced assemblies is corrupted.
If your build configuration type is "AnyCPU" then sometimes accessing com objects those are only available for 32 bit interface sometime creates problem, try re building your app/project with x86 and then on 64 bit machine any 32 bit program will function exactly same.
By looking at the error, I can see that on 64 bit machine the temp folder may be placed in different location and your 32 bit program can not find it.
精彩评论