Как добавить тип System.Xml.XmlDocument в состояние приложений - PullRequest
1 голос
/ 09 февраля 2010

Я использую Asp.net 3.5 и C #

Мне нужно добавить XmlDocument в состояние моего приложения, чтобы каждый раз, когда мое приложение не обращалось к файлу XML в моей файловой системе, я добавлял его в функцию Application_Start () в Global.asax.cs

Я добавляю это в состояние системы как:

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"];

ошибка, которую я получаю при сборке

Невозможно неявно преобразовать тип «объект» в «System.Xml.XmlDocument». Существует явное преобразование

Итак, как назначить переменную HttpContext.Current.Application ["xmlDoc"] как System.Xml.XmlDocument?

Ответы [ 2 ]

2 голосов
/ 09 февраля 2010

Ваша проблема здесь:

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

Попробуйте

xmlDoc = HttpContext.Current.Application["xmlDoc"] as System.Xml.XmlDocument; 
0 голосов
/ 09 февраля 2010

Получил ответ после небольшого поиска, простой, но может быть сложным для разработчика PHP, работающего на C # (как это было в моем случае) ну я просто должен был явно привести свою переменную состояния приложения к XmlDocument то есть на месте:

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

Я использовал:

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

и становится робастным:)

Может кто-нибудь сказать мне, каков будет срок действия этой переменной ApplicationState?

...