Frage

Ich verwende ASP.NET 3.5 und C#

Ich muss meinem Anwendungsstatus ein XMLDocument hinzufügen, damit jedes Mal, wenn meine Anwendung auf die XML -Datei in meinem Dateisystem zugreift, werde ich diese in der Funktion application_start () in global.asax.cs hinzufügen

Ich füge dies dem Systemstatus hinzu als:

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;
    }
}

In diesem Code versuche ich, die XML -Datei zu laden, und wenn die Datei aufgrund eines Problems nicht geladen wird, möchte ich ein NULL XMLDOCUMEN.

Ich greife auf dieses xmldocument als:

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

Der Fehler, den ich während des Builds bekomme

Kann nicht implizit Typ 'Objekt' in 'System.xml.xmldocument' konvertieren. Es gibt eine explizite Konvertierung

Wie kann man die httpcontext.current.application ["xmldoc"] Variable as System.xml.xmldocument zuweisen?

War es hilfreich?

Lösung 2

Ich habe die Antwort nach einem kleinen Googeln bekommen, ein einfaches, kann aber für einen PHP -Entwickler schwierig sein, der an C# arbeitet (wie es in meinem Fall war).

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

Ich benutzte :

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

Und es wird robust :)

Kann mir jemand sagen, was die Lebensdauer dieser Anwendungsvariablen sein wird?

Andere Tipps

Ihr Problem ist hier:

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

Versuchen

xmlDoc = HttpContext.Current.Application["xmlDoc"] as System.Xml.XmlDocument; 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top