Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于从web下载和读取xml文件的函数突然停止工作_C#_Xml - Fatal编程技术网

C# 用于从web下载和读取xml文件的函数突然停止工作

C# 用于从web下载和读取xml文件的函数突然停止工作,c#,xml,C#,Xml,我已经使用这个确切的代码(如下)多年,并与现有的ISP。我只是检查了一下它是否有效——它不再允许我下载xml文件。我在尝试获取流对象时遇到了几个异常(如下所示)。如果我将相同的URL放入web浏览器,提供相同的凭据,下载xml文件就可以了。所以我不确定为什么它在这个代码中不再工作。代码、凭据或xml文件中没有任何更改。用户名和密码没有更改。我甚至尝试在代码中的凭据中使用域名(尽管在web浏览器中不是必需的) 下面的代码用于在需要时传递凭据 使用必要的凭据创建冲突解决程序 获取流对象时发生异常错误

我已经使用这个确切的代码(如下)多年,并与现有的ISP。我只是检查了一下它是否有效——它不再允许我下载xml文件。我在尝试获取流对象时遇到了几个异常(如下所示)。如果我将相同的URL放入web浏览器,提供相同的凭据,下载xml文件就可以了。所以我不确定为什么它在这个代码中不再工作。代码、凭据或xml文件中没有任何更改。用户名和密码没有更改。我甚至尝试在代码中的凭据中使用域名(尽管在web浏览器中不是必需的)

下面的代码用于在需要时传递凭据 使用必要的凭据创建冲突解决程序

获取流对象时发生异常错误

我甚至尝试使用新的凭证,也许旧凭证会过期

仍在使用.NET4.5(VisualStudio2010)

代码的其余部分是解析读取的文件

//然后它假设从下面的阅读器读取XML代码

             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;