Pregunta

Estoy usando Asp.net 3.5 y C#

Tengo que agregar un XmlDocument al estado de mi aplicación para que cada vez que mi aplicación no acceda al archivo XML en mi sistema de archivos, lo agregue en la función Application_Start() en Global.asax.cs.

Estoy agregando esto al estado del sistema como:

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

En este código intento cargar el archivo xml y si el archivo no se carga debido a algún problema, entonces quiero un XmlDocument nulo.

Accedo a este XmlDocument como:

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

el error que recibo durante la compilación es

No se puede convertir implícitamente el tipo 'objeto' a 'System.Xml.XmlDocument'.Existe una conversión explícita

Entonces, ¿cómo asignar la variable HttpContext.Current.Application["xmlDoc"] como System.Xml.XmlDocument?

¿Fue útil?

Solución 2

Obtuve la respuesta después de un poco de Google, uno simple, pero puede ser complicado para un desarrollador de PHP que trabaje en C# (como lo fue en mi caso) Bueno, solo tuve que lanzar explícitamente mi estado de aplicación variable a XMLDocument que está en el lugar de:

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

Solía ​​:

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

y se vuelve Robusto :)

¿Alguien puede decirme cuál será la vida útil de esta variable ApplicationState?

Otros consejos

Tu problema está aquí:

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

Probar

xmlDoc = HttpContext.Current.Application["xmlDoc"] as System.Xml.XmlDocument; 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top