2017-05-03 91 views
0

我已经使用了这个确切的代码(下面)很多年,并与现有的ISP。我只是检查它是否工作 - 它不再允许我下载xml文件。试图获取Stream对象时会出现一些异常(如下所示)。如果我将相同的URL放入Web浏览器,请提供相同的凭据,它可以很好地下载xml文件。所以我不确定它为什么不能在这个代码中工作了。代码或证书或xml文件中没有任何更改。用户名和密码没有改变。我甚至尝试在代码中的证书中使用域名(尽管在浏览器中不需要)。从网上下载和读取xml文件的功能突然停止工作

如果询问 ,则通过凭据的代码如下:创建具有必要凭据的解析器。

XmlUrlResolver resolver = new XmlUrlResolver(); 
//try username with and without domain name  
// NetworkCredential nc = new NetworkCredential("[email protected]", "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

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

//那么它想阅读以下

   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

屏幕截图中的例外情况可能并不重要。当调试器尝试读取对象的所有属性时会生成这些信息。但是,您可以看到该对象实际上已创建(并且您的指令指针已移至下一行)。当您尝试执行下一行“new XmlTextReader”时,得到的错误是什么? – ErikE

+0

所以这个代码的想法是从网站上的xml文件中检查我在应用程序中运行的软件的当前版本号。如果它无法获取xml文件,那么它会关闭。 – user3044638

+0

我仍然不知道错误信息是什么,或者它出现在哪一行。没有这些信息,谁能提供帮助?!?!我们不是魔术师。 – ErikE

回答

0

来自读取器的XML代码,事实证明,我切换到不同的托管网站,而且功能正常工作。似乎有一些新的安全强加在原来的托管网站上,以防止读取XML文件。奇怪的是我可以通过网页浏览器使用http下载,但不能使用此功能。在新的托管网站上,两者都可以工作。