大家。我正在使用Ubuntu 10.10的Mono 2.4开发一个小型ASP.NET Mvc项目。有一个对象数组,每个对象对应一个特定的xml文件。使用XmlTextReader执行xmls的读取。这不起作用,因为xml文件具有罕见的“cp866nav”编码,XmlTextReader(“System.ArgumentException: Encoding name 'cp866nav' not supported
”)不支持该编码。但是如果xml标头中的编码更改为“cp866”,则它可以正常工作。我发现了一种解决方案,它包括使用具有特定编码而不是文件名的StreamReader初始化XmlTextReader,如下面的代码所示:
XmlTextReader reader = new XmlTextReader(new StreamReader(Server.MapPath(filename), Encoding.GetEncoding("cp866")));
问题是包含xml文件的目录是只读的(我无法更改),所以我得到了
“System.UnauthorizedAccessException: Access to the path '' is denied.
”。相当奇怪,因为用文件名初始化的XmlTextReader似乎读取了文件。
是否有任何解决方案,考虑到程序无法修改或创建文件?
答案 0 :(得分:0)
由于您的问题在于文件访问而不是编码,我建议尝试使用正确的标志FileStream(name,FileMode.Open,FileAccess.Read)以文件流的形式打开文件,然后调用其他构造函数StreamReader来获取Stream。
(完成后不要忘记配置流/阅读器。)