2010-02-09 76 views
1

我使用Asp.net 3.5 C#如何将System.Xml.XmlDocument类型添加到和应用程序状态

我有一个XmlDocument添加到我的应用程序的状态,这样每次我的应用程序犯规上访问XML文件我的文件系统,我会在Global.asax.cs中的的Application_Start()函数中添加此

我为加入这一系统状态:

protected void Application_Start(Object sender, EventArgs e) 
{  
    string filePath = Server.MapPath("<path to my XML FILE>"); 
    XmlDocument xmlDoc = new XmlDocument(); 
    try 
    { 
     xmlTickerDoc.Load(filePath); 
    } 
    finally 
    { 
     HttpContext.Current.Application["xmlDoc"] = xmlDoc; 
    } 
} 

在此代码我尝试加载XML文件,并如果该文件没有加载由于任何问题,那么我想要一个空的XmlDocument。

我访问此XmlDocument的是:

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc = HttpContext.Current.Application["xmlDoc"]; 

错误我得到的,而构建是

不能键入 '对象' 隐式转换为 'System.Xml.XmlDocument'。存在明确的转换

那么如何将HttpContext.Current.Application [“xmlDoc”]变量指定为System.Xml.XmlDocument?

回答

0

得到的答案有点谷歌搜索后,一个简单的,但可能会非常棘手的PHP开发人员对C#的工作(因为它是在我的情况) 以及我只是必须明确地投我的应用程序状态变量为XmlDocument 这是在的地方:

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc = HttpContext.Current.Application["xmlDoc"]; 

我用:

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc = (XmlDocument) HttpContext.Current.Application["xmlDoc"]; 

,并且变得强大:)

任何一个可以告诉我这将是该ApplicationState变量的生命周期?

+0

如果您有其他问题,请编辑您的问题/添加一个单独的问题。不要把它作为答案的一部分。 – 2010-02-09 08:14:34

1

你的问题是在这里:

xmlDoc = HttpContext.Current.Application["xmlDoc"]; 

尝试

xmlDoc = HttpContext.Current.Application["xmlDoc"] as System.Xml.XmlDocument; 
+0

阿罕谢谢,我刚刚发布的答案如何,您能指导我使用哪种方法。我的意思是说这两者之间有差别,都明确表示他们不? – 2010-02-09 07:42:13

+0

如果对象不能被转换,则显式转换可能会引发异常。使用'as'将把对象设置为null。因此,直接投射可能会稍微更高效,并帮助更快地捕捉错误。尽管如此,使用'as'看起来更易读。 – 2010-02-09 08:03:28