从web下载和读取xml文件的功能突然停止工作

时间:2017-05-03 22:21:49

标签: c# xml

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

  

如果要求,下面是传递凭据的代码   使用必要的凭据创建一个解析器。

XmlUrlResolver resolver = new XmlUrlResolver();
//try username with and without domain name     
// NetworkCredential nc = new NetworkCredential("userxyz@mydomain.com", "password1234");
NetworkCredential nc = new NetworkCredential("userxyz", "password1234");
resolver.Credentials = nc;
// Get a Stream object containing the XML file.
Uri updateXmlUrl = new Uri(UpdateCheckXmlFileUrl);
Stream Updatestream = (Stream)resolver.GetEntity(updateXmlUrl, null, typeof(Stream));
// Construct a reader using the Stream object.
XmlTextReader reader = new XmlTextReader(Updatestream);
  

获取流对象的异常错误   enter image description here

我甚至尝试使用新的凭据,也许旧的凭据可能会过期。

仍在使用.net 4.5(Visual Studio 2010)

Watch list on next line below

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

//然后它假设从下面的阅读器中读取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;

1 个答案:

答案 0 :(得分:0)

事实证明,我切换到了不同的托管网站,功能正常。似乎在原始主机站点上强加了一些新的安全性,使其无法读取xml文件。奇怪的是,我可以使用网页浏览器下载http,但不能使用此功能。在新的托管网站上,两者都有效。