2011-12-14 33 views
0

我们已经在客户端安装了.NET 4.0 Full。当前System.dll版本是4.0.30319.236。无法加载程序集,来自System的0字节BadImageFormatException

我们的测试应用程序可以毫无问题地打开,我向同一网络上的WCF服务发起简单的“回声”。不过,我得到当服务调用,调用这个讨厌的错误:

Creating proxy 
calling service method 
ERROR: exception during service call and response process: Could not load file or assembly '0 bytes loaded from System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. An attempt was made to load a program with an incorrect format. 
System.BadImageFormatException 

堆栈跟踪:

Server stack trace: 
    at System.Reflection.RuntimeAssembly.nLoadImage(Byte[] rawAssembly, Byte[] rawSymbolStore, Evidence evidence, StackCrawlMark& stackMark, Boolean fIntrospection, SecurityContextSource securityContextSource) 
    at System.Reflection.Assembly.Load(Byte[] rawAssembly, Byte[] rawSymbolStore, Evidence securityEvidence) 
    at Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch(CompilerParameters options, String[] fileNames) 
    at Microsoft.CSharp.CSharpCodeGenerator.FromSourceBatch(CompilerParameters options, String[] sources) 
    at Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters options, String[] sources) 
    at System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromSource(CompilerParameters options, String[] sources) 
    at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters 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.XmlSerializer.GetSerializersFromCache(XmlMapping[] mappings, Type type) 
    at System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[] mappings, Type type) 
    at System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.SerializerGenerationContext.GenerateSerializers() 
    at System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.SerializerGenerationContext.GetSerializer(Int32 handle) 
    at System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.MessageInfo.get_BodySerializer() 
    at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.SerializeBody(XmlDictionaryWriter writer, MessageVersion version, String action, MessageDescription messageDescription, Object returnValue, Object[] parameters, Boolean isRequest) 
    at System.ServiceModel.Dispatcher.OperationFormatter.SerializeBodyContents(XmlDictionaryWriter writer, MessageVersion version, Object[] parameters, Object returnValue, Boolean isRequest) 
    at System.ServiceModel.Dispatcher.OperationFormatter.OperationFormatterMessage.OperationFormatterBodyWriter.OnWriteBodyContents(XmlDictionaryWriter writer) 
    at System.ServiceModel.Channels.BodyWriter.WriteBodyContents(XmlDictionaryWriter writer) 
    at System.ServiceModel.Channels.BodyWriterMessage.OnWriteBodyContents(XmlDictionaryWriter writer) 
    at System.ServiceModel.Channels.Message.OnWriteMessage(XmlDictionaryWriter writer) 
    at System.ServiceModel.Channels.Message.WriteMessage(XmlDictionaryWriter writer) 
    at System.ServiceModel.Channels.BufferedMessageWriter.WriteMessage(Message message, BufferManager bufferManager, Int32 initialOffset, Int32 maxSizeQuota) 
    at System.ServiceModel.Channels.BinaryMessageEncoderFactory.BinaryMessageEncoder.WriteMessage(Message message, Int32 maxMessageSize, BufferManager bufferManager, Int32 messageOffset) 
    at Microsoft.Samples.CompressionEncoder.MyCompressionMessageEncoderFactory.MyCompressionMessageEncoder.WriteMessage(Message message, Int32 maxMessageSize, BufferManager bufferManager, Int32 messageOffset) in C:\Projects\TariffServices\TariffService\Source\Service Interface\CompressionEncoder\MyCompressionMessageEncoderFactory.cs:line 163 
    at System.ServiceModel.Channels.FramingDuplexSessionChannel.EncodeMessage(Message message) 
    at System.ServiceModel.Channels.FramingDuplexSessionChannel.OnSend(Message message, TimeSpan timeout) 
    at System.ServiceModel.Channels.OutputChannel.Send(Message message, TimeSpan timeout) 
    at System.ServiceModel.Channels.TransactionDuplexChannelGeneric`1.Send(Message message, TimeSpan timeout) 
    at System.ServiceModel.Dispatcher.DuplexChannelBinder.Request(Message message, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 

我们已经重新安装了框架无数次,我已经试过重新NGEN” System.dll。什么都没有

我运行了.Net安装验证工具,返回时没有错误。

System.dll的大小为3 510 600字节。

在服务器机器上(托管WCF服务),一切都很好。该机器上的.Net版本也是4.0.30319.236。

两台机器都在WinXP 32bit Professional SP3,2GB RAM上。

任何想法?

感谢,

克里斯

+0

确保您的代码不需要依赖于x64平台的任何内容。尝试编译你的应用程序明确要求x86(32位)排除这种可能性。 – 2011-12-14 10:37:25

回答

0

我们已经搁置这个问题现在。这台PC似乎有更多的错误,而不是满足目光。我们建议重新格式化和安装WinXP。

相关问题