我编写的函数基本上每天为我加密4次,并将加密写入xml文件。现在我们有4个区域,分别是Dev,QA,ITE和PROD。我没有在DEV,QA,ITE中遇到任何错误,但在PROD中发生了奇怪的事情。 代码失败的第一个例外是
Invalid XML document, The document does not have a root element.. at System.Xml.XmlDocument.Save(String filename)
也得到了这个例外:
The process cannot access the file 'configfile.xml' because it is being used by another process. at System.IO.__Error.WinIOError(Int32 errorCode, StringmaybeFullPath)at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.Xml.XmlDocument.Save(String filename)
我感觉这是由于并发请求而发生的。使用的编程语言是C#with ASP.NET 2.0。
有人可以启发我吗?
答案 0 :(得分:1)
“另一个进程正在使用的文件”异常肯定是尝试并发访问(这可能来自当前进程)。
Process Explorer可以在这里提供帮助:搜索文件名以查看哪些进程处理了该文件。
关于XML错误:XML是“Well Formed”还是XML。这意味着只有一个根元素。
组建良好:
<root>
Stuff
</root>
不是XML:
<root1>
Stuff
</root>
More stuff
.NET中加载“XML Fragments”的能力有限,这可能会破坏文档规则,但这实际上是为了插入完整的文档,而不是作为XML规则的替代。