C# 用于从web下载和读取xml文件的函数突然停止工作
我已经使用这个确切的代码(如下)多年,并与现有的ISP。我只是检查了一下它是否有效——它不再允许我下载xml文件。我在尝试获取流对象时遇到了几个异常(如下所示)。如果我将相同的URL放入web浏览器,提供相同的凭据,下载xml文件就可以了。所以我不确定为什么它在这个代码中不再工作。代码、凭据或xml文件中没有任何更改。用户名和密码没有更改。我甚至尝试在代码中的凭据中使用域名(尽管在web浏览器中不是必需的) 下面的代码用于在需要时传递凭据 使用必要的凭据创建冲突解决程序 获取流对象时发生异常错误 我甚至尝试使用新的凭证,也许旧凭证会过期 仍在使用.NET4.5(VisualStudio2010) 代码的其余部分是解析读取的文件 //然后它假设从下面的阅读器读取XML代码C# 用于从web下载和读取xml文件的函数突然停止工作,c#,xml,C#,Xml,我已经使用这个确切的代码(如下)多年,并与现有的ISP。我只是检查了一下它是否有效——它不再允许我下载xml文件。我在尝试获取流对象时遇到了几个异常(如下所示)。如果我将相同的URL放入web浏览器,提供相同的凭据,下载xml文件就可以了。所以我不确定为什么它在这个代码中不再工作。代码、凭据或xml文件中没有任何更改。用户名和密码没有更改。我甚至尝试在代码中的凭据中使用域名(尽管在web浏览器中不是必需的) 下面的代码用于在需要时传递凭据 使用必要的凭据创建冲突解决程序 获取流对象时发生异常错误
reader.MoveToContent();
string elementName = "";
Version newVer = null;
string url = "";
string msiUrl = "";
if (StopWorkerThread()) return;
if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "appinfo"))
{
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element) elementName = reader.Name;
else
{
if ((reader.NodeType == XmlNodeType.Text) && (reader.HasValue))
{
switch (elementName)
{
case "version":
newVer = new Version(reader.Value);
break;
case "url":
url = reader.Value;
break;
case "installer":
msiUrl = reader.Value;
break;
case "date":
//elementName = elementName;
break;
}
}
}
}
}
// it gets to here and falls through to a false on the versioninfo.Error
reader.Close();
versionInfo.Error = false;
versionInfo.LatestVersion = newVer;
versionInfo.HomeUrl = url;
versionInfo.InstallerUrl = msiUrl;
事实证明,我切换到了另一个托管站点,该功能正常工作。似乎对原始托管站点施加了一些新的安全措施,使其无法读取xml文件。奇怪的是,我可以通过web浏览器使用http进行下载,但不能使用此功能。在新的托管站点上,这两种方法都有效。屏幕截图中的异常可能不是重要的异常。当调试器尝试读取对象的所有属性时,将生成这些属性。但是,您可以看到该对象实际上已创建(并且您的指令指针已移动到下一行)。当您尝试执行下一行时,会出现什么错误?
new XmlTextReader
?因此,此代码的目的是从网站上的xml文件检查我在应用程序中运行的软件的当前版本号。如果它无法获取xml文件,那么它将无法关闭。我仍然不知道错误消息是什么,或者它发生在哪一行。没有这些信息,谁能帮忙?!?!我们不是魔术师。我很确定问题出在StreamUpdateStream行中,那里发生了异常错误。如果无法正确解决此问题,则此后的一切都将无法工作,即XmlTextReader从Updatestream获取其数据。问题是,我似乎无法深入了解StreamUpdateStream,以了解为什么会出现这些预期。我只是没有信息来帮助您。想象一下,你会建议其他人只处理这里的信息。。。
reader.MoveToContent();
string elementName = "";
Version newVer = null;
string url = "";
string msiUrl = "";
if (StopWorkerThread()) return;
if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "appinfo"))
{
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element) elementName = reader.Name;
else
{
if ((reader.NodeType == XmlNodeType.Text) && (reader.HasValue))
{
switch (elementName)
{
case "version":
newVer = new Version(reader.Value);
break;
case "url":
url = reader.Value;
break;
case "installer":
msiUrl = reader.Value;
break;
case "date":
//elementName = elementName;
break;
}
}
}
}
}
// it gets to here and falls through to a false on the versioninfo.Error
reader.Close();
versionInfo.Error = false;
versionInfo.LatestVersion = newVer;
versionInfo.HomeUrl = url;
versionInfo.InstallerUrl = msiUrl;