读书人

解决再送100分  XDocument.Save方

发布时间: 2013-04-02 12:35:26 作者: rapoo

解决再送100分  XDocument.Save方法出现异常,求可能原因
public void MakeIDListFile(string fileName, string[] idList)
{

XDocument doc = new XDocument();
XDeclaration declaration = new XDeclaration("1.0", "shift_jis", "yes");
doc.Declaration = declaration;
XElement idListElement = new XElement("ID_LIST");
doc.Add(idListElement);

XElement idElemtent;
for (int i = 0; i < idList.Length; i++)
{
idElemtent = new XElement("ID");
idElemtent.Add(idList[i]);
idListElement.Add(idElemtent);
}
doc.Save(fileName); }

异常信息如下
System.IO.IOException: 要求された操作はユザ マップ セクションでいたファイルでは行できません。

所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
所 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)
所 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
所 System.Xml.XmlWriter.Create(String outputFileName, XmlWriterSettings settings)
所 System.Xml.Linq.XDocument.Save(String fileName, SaveOptions options)
所 System.Xml.Linq.XDocument.Save(String fileName)
所 XXXXXXXXX.common.util.CommonService.MakeIDListFile(String fileName, String[] pnList)

这个异常的可能的汉语意思:请求的操作无法在使用用户映射区域打开的文件上执行
程序一直正常运行,某日连续发生几次这个异常,过了段时间又正常运行。

什么原因可能导致这个异常呢?  文件不存在,文件无法访问,路经错误等都不是报这个错。



[解决办法]
百度搜索了很多信息:综合了一下
1.文件夹没有相应的操作权限
2.文件不存在?
3.该文件被其它人打开没有关闭
依次的解决方法你懂的。
[解决办法]
个人认为应该是文件被同时占用,没有即时释放资源引起的
[解决办法]
会不会没有考虑到线程间的安全?一旦多线程操作就出现IO冲突呢?
[解决办法]
是不是XML文件写好之后,然后以非只读的方式打开,再次写入导致的文件占用?
------解决方案--------------------


目测是系统问题,,你看都乱码了...

要求された操作はユザ マップ セクションでいたファイルでは行できません。


これは何八ものですね

きっとシステムの
[解决办法]
操作xml文件,一般检查下这样几个方面,
1,权限,
2,进程占用,是否发生资源抢占情况
3,文件特别大,内存资源情况。

doc.save前查看下文件是否存在,资源释放等操作,一般都没有问题.
[解决办法]


[解决办法]
引用:
个人认为应该是文件被同时占用,没有即时释放资源引起的


这个可能性很大。
[解决办法]
这就是因为多人同时使用了同一个XML导致的。
当然访问量大的时候才会出现这个问题。

建议这种换成数据库,可以避免同时占用问题。

[解决办法]
你这个程序应该是WEB的把?
WINFORM触发的几率很小的
[解决办法]
那就是用户权限问题吧?
[解决办法]
可能一个程序没关,又打开一个程序生成了
[解决办法]
不懂,帮你顶一下!
版主:为什么限制每贴最高一百分呢?我一个300分的帖子只结给回答者一百分,另两个帖子他一直没登录过也没顶,所以一直给不了他分!
[解决办法]
先google日文看到一堆结果,然后找到了对应的英文
The requested operation cannot be performed on a file with a user-mapped section open
然后用英文再google一下
http://stackoverflow.com/questions/1047616/whats-wrong-when-the-requested-operation-cannot-be-performed-on-a-file-with-a
这里说有可能是杀毒软件等会监视文件的程序造成的,也有可能是循环创建文件太快了,上一个还没关闭
[解决办法]
是往 局域网 共享上写吗?
看着像是没有写权限的错误
[解决办法]
应该是多线程访问 导致的

读书人网 >C#

热点推荐