如何将 System.Xml.XmlDocument 类型添加到应用程序状态
Posted
技术标签:
【中文标题】如何将 System.Xml.XmlDocument 类型添加到应用程序状态【英文标题】:How to add a System.Xml.XmlDocument type to applications state 【发布时间】:2011-01-14 16:58:31 【问题描述】:我正在使用 Asp.net 3.5 和 C#
我必须将 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"];
我在构建时遇到的错误是
无法将类型“object”隐式转换为“System.Xml.XmlDocument”。存在显式转换
那么如何将 HttpContext.Current.Application["xmlDoc"] 变量分配为 System.Xml.XmlDocument ?
【问题讨论】:
【参考方案1】:经过一番谷歌搜索后得到了答案,这是一个简单的答案,但对于使用 C# 的 php 开发人员来说可能会很棘手(就像我的情况一样) 好吧,我只需要将我的应用程序状态变量显式转换为 XmlDocument 位于:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc = HttpContext.Current.Application["xmlDoc"];
我用过:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc = (XmlDocument) HttpContext.Current.Application["xmlDoc"];
它变得健壮:)
谁能告诉我这个 ApplicationState 变量的生命周期是多少?
【讨论】:
如果您有其他问题,请编辑您的问题/添加一个单独的问题。不要将其作为答案的一部分。【参考方案2】:你的问题在这里:
xmlDoc = HttpContext.Current.Application["xmlDoc"];
试试
xmlDoc = HttpContext.Current.Application["xmlDoc"] as System.Xml.XmlDocument;
【讨论】:
ahan 谢谢,我刚刚发布的答案怎么样,你能指导我使用哪种方法。我的意思是两者之间有区别吗,两者都明确地转换了,不是吗? 如果对象不能被强制强制转换,显式强制转换可能会抛出异常。使用 'as' 会将对象设置为 null。因此,直接强制转换可能会稍微提高性能并帮助更快地捕获错误。不过,使用 'as' 对我来说更具可读性。以上是关于如何将 System.Xml.XmlDocument 类型添加到应用程序状态的主要内容,如果未能解决你的问题,请参考以下文章