2017-05-03 55 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下載,但不能使用此功能。在新的託管網站上,兩者都可以工作。