C# 从UNC路径加载XML文件无法正常工作

C# 从UNC路径加载XML文件无法正常工作,c#,xml,unc,C#,Xml,Unc,我想加载一个位于服务器上的XML文件,这样我就可以获得名为“CheckInterval”的XML元素的值,并将其存储在名为“NewIntervalSet”的字符串中 我正在加载以下名为“ConfigFile.XML”的XML文件 我将XML元素“CheckInterval”存储到字符串“NewIntervalSet”中的方式如下: XElement xelement; xelement = XElement.Load(Path.Combine("\\\\server\\public\\Engin

我想加载一个位于服务器上的XML文件,这样我就可以获得名为“CheckInterval”的XML元素的值,并将其存储在名为“NewIntervalSet”的字符串中

我正在加载以下名为“ConfigFile.XML”的XML文件

我将XML元素“CheckInterval”存储到字符串“NewIntervalSet”中的方式如下:

XElement xelement;
xelement = XElement.Load(Path.Combine("\\\\server\\public\\Engineering","ConfigFile.xml"));
string NewIntervalSet;
NewIntervalSet=xelement.Descendants("CartConfiguration")
     .Select(x => x.Element("CheckInterval").Value).FirstOrDefault();
XDocument xDocument;
xDocument= XDocument.Load(Path.Combine("\\\\server\\public\\Engineering","ConfigFile.xml"));

当我将断点放在加载文件的位置时,我可以看到文件正在正确加载,因此我知道路径是正确的,但是当它尝试选择XML元素时,它跳过这行代码,并返回空值,因此在“NewIntervalSet”变量上返回空字符串。我不知道为什么要这样做,当我使用相同的代码但路径在本地计算机上时,它工作正常。

您的程序可能遇到权限问题。根据MSDN,通过调用创建,调用又有以下内容

没有凭据的默认XmlUrlResolver用于访问任何 外部资源,如文档类型定义(DTD)、实体、, 模式等等。如果外部资源位于网络上 需要身份验证的资源,请使用 使用XmlReaderSettings.XmlResolver的必要凭据 财产


因为您的XML文档位于网络路径上,所以它使用默认/空凭据,导致它没有读取权限,并且文档为空。尝试以流的形式打开文件,这样您就可以在文件读取文本的地方运行,然后使用重载将该流导入新的XElement。或者,自己实例化XmlResolver,以便设置凭据。

我通过将XML文件作为XDocument而不是XElement加载来解决此问题。我加载XML文件的新方法如下:

XElement xelement;
xelement = XElement.Load(Path.Combine("\\\\server\\public\\Engineering","ConfigFile.xml"));
string NewIntervalSet;
NewIntervalSet=xelement.Descendants("CartConfiguration")
     .Select(x => x.Element("CheckInterval").Value).FirstOrDefault();
XDocument xDocument;
xDocument= XDocument.Load(Path.Combine("\\\\server\\public\\Engineering","ConfigFile.xml"));

尝试将路径映射为驱动器并从那里打开。根据我的经验,使用UNC路径会导致权限问题。如果这是实际代码,它应该返回0.25。您确定文件已加载吗?