MSMQ在使用.NET时间歇性引发IOException

MSMQ在使用.NET时间歇性引发IOException,.net,msmq,ioexception,.net,Msmq,Ioexception,MSMQ存在间歇性问题,发送到队列时会生成System.IO.IOException。我找不到有关此信息的任何信息,因此不确定为什么会发生此情况(MSDN文档甚至没有列出此问题)。如前所述,它是间歇性的,因此调试很困难,并且不会发生在开发环境中(仅在QA中) 堆栈跟踪: at Microsoft.CSharp.CSharpCodeGenerator.FromSourceBatch(System.CodeDom.Compiler.CompilerParameters, System.Stri

MSMQ存在间歇性问题,发送到队列时会生成
System.IO.IOException
。我找不到有关此信息的任何信息,因此不确定为什么会发生此情况(MSDN文档甚至没有列出此问题)。如前所述,它是间歇性的,因此调试很困难,并且不会发生在开发环境中(仅在QA中)

堆栈跟踪:

   at Microsoft.CSharp.CSharpCodeGenerator.FromSourceBatch(System.CodeDom.Compiler.CompilerParameters, System.String[])
   at Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromSourceBatch(System.CodeDom.Compiler.CompilerParameters, System.String[])
   at System.Xml.Serialization.Compiler.Compile(System.Reflection.Assembly, System.String, System.Xml.Serialization.XmlSerializerCompilerParameters, System.Security.Policy.Evidence)
   at System.Xml.Serialization.TempAssembly.GenerateAssembly(System.Xml.Serialization.XmlMapping[], System.Type[], System.String, System.Security.Policy.Evidence, System.Xml.Serialization.XmlSerializerCompilerParameters, System.Reflection.Assembly, System.Collections.Hashtable)
   at System.Xml.Serialization.TempAssembly..ctor(System.Xml.Serialization.XmlMapping[], System.Type[], System.String, System.String, System.Security.Policy.Evidence)
   at System.Xml.Serialization.XmlSerializer..ctor(System.Type, System.String)
   at System.Messaging.XmlMessageFormatter.Write(System.Messaging.Message, System.Object)
   at System.Messaging.Message.AdjustToSend()
   at System.Messaging.MessageQueue.SendInternal(System.Object, System.Messaging.MessageQueueTransaction, System.Messaging.MessageQueueTransactionType)
   at Test.MSMQWrite.WriteMessageInternal(System.String, System.Object, Boolean)
   at Test.Program.Main(System.String[])
WriteMessageInternal的代码:

private static void WriteMessageInternal(string queueName, object data)
{            
    using (var queue = new MessageQueue(queueName, false, false, QueueAccessMode.Send))
    {                
        queue.Send(data);
    }
}

您是否尝试记录失败时的实际对象类型,以便没有意外类型显示为“对象”?似乎有些东西在序列化时遇到了问题,而且它听起来不应该是随机的,除非传入的类型是随机的。我唯一能想到的另一个“随机生成器”是,如果有什么东西正在停止文件写入。您是否尝试暂时禁用防病毒软件?QA是否有比你更多的杀毒软件?@JoachimIsaksson我可以确认没有出现意外类型,所以我怀疑这是序列化。我认为您更接近于停止火写入-虽然这可能是原因所在。您是否有机会填满队列?您的写入速度是否比读取速度慢/更不频繁?我看到的唯一导致Microsoft.CSharp.CSharpCodeGenerator.FromSourceBatch中IOException的原因是将文件写入磁盘,最有可能是临时存储。由于没有防病毒软件可以阻止它,所以它的间歇性故障似乎很奇怪。