如何将 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 类型添加到应用程序状态的主要内容,如果未能解决你的问题,请参考以下文章

如何将Ios文件上传到

Qt如何将文字变成图片?

如何将Bitmap保存为本地图片文件?

在MATLAB中如何将图导出

ASP如何将SQLSERVER数据导出到DBF(VF)

如何将CSV格式转换成JSON格式