【问题标题】:How to add a System.Xml.XmlDocument type to applications state如何将 System.Xml.XmlDocument 类型添加到应用程序状态
【发布时间】: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 ?

【问题讨论】:

    标签: c# asp.net xml xmldocument application-state


    【解决方案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' 对我来说更具可读性。
    猜你喜欢
    • 2020-02-07
    • 2019-05-12
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2015-05-04
    • 2012-02-20
    • 2023-01-26
    相关资源
    最近更新 更多