2011-09-09 66 views
2

我試圖加載在MVC的XML文檔中的「HomeController的」加載XML在MVC控制器

我想這個文件在/ home /目錄下的一切加載瞭如此有我的類:

public HomeController() 
     { } 

而且這裏面我有我想要連接到XML的代碼:將XML的

//Now set up the config xml read 
     XmlDocument xmldoc = new XmlDocument(); 
     xmldoc.Load(HttpContext.Server.MapPath("~/Content/settings.xml")); 
     XmlNodeList settings = xmldoc.SelectNodes("/settings"); 
     XmlNodeList defaults = xmldoc.GetElementsByTagName("default"); 
     foreach (XmlNode node in defaults) 
     { 
      string def_WebPageName = node["WebPageName "].InnerText; 
     } 

結構:

<settings> 
<defaults> 
    <WebPageName>blah</WebPageName> 
</defaults> 

我似乎無法找到theXML文件,不斷收到一個「對象設置爲空引用」錯誤

+1

嘗試的行導致空裁判例外呢?如果xmldoc.Load找不到該文件,您將得到某種IO異常而不是空引用。 –

+0

也許路徑不正確。 xmldoc.Load(HttpContext.Server.MapPath(「〜/ Content/settings.xml」)); – Thinhbk

+0

異常詳細信息:System.NullReferenceException:未將對象引用設置爲對象的實例。 源錯誤: 行29://現在設置config xml讀取 行30:XmlDocument xmldoc = new XmlDocument(); 第31行:xmldoc.Load(Server.MapPath(「〜/ Content/settings.xml」)); – JustAnotherDeveloper

回答

1

如果它是一個Web應用程序,你得到的財產以後像http://yoursite/Content/settings.xml。檢查Web服務器上是否存在此文件路徑。如果它是WinForms應用程序,請使用ExecutionPath或Environment變量來獲取所需的路徑。

你也應該使用類似if(File.Exists(yourFilePathHere))

+0

剛剛從瀏覽器中檢查,並且該文件是可訪問的。我認爲這可能與我如何調用該文件有關? – JustAnotherDeveloper

+0

因此,請嘗試使用來自webrequest而不是字符串的流。 – Scarlaxx

5

而不是

xmldoc.Load(HttpContext.Server.MapPath("~/Content/settings.xml")); 

只有

xmldoc.Load(Server.MapPath("~/Content/settings.xml"));