2011-09-09 37 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"));