2010-02-09 2 views
1

Я использую Asp.net 3,5 и C#Как добавить тип System.Xml.XmlDocument для приложений состояния

Я должен добавить 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?

ответ

0

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

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

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

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

и становится Robust :)

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

+0

Пожалуйста, отредактируйте ваш вопрос/добавьте отдельный вопрос, если у вас есть другой вопрос. Не иметь его как часть ответа. – 2010-02-09 08:14:34

1

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

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

Попробуйте

xmlDoc = HttpContext.Current.Application["xmlDoc"] as System.Xml.XmlDocument; 
+0

ahan thanks, как насчет ответа, который я только что опубликовал, можете ли вы направить меня, какой подход я должен использовать. Я имею в виду, есть ли разница между ними, как явно, так и они? –

+0

Явное приведение может вызвать исключение, если объект не может быть запущен. Использование 'as' установит объект в null. Таким образом, непосредственный листинг может быть немного более эффективным и быстрее справляться с ошибками. Использование 'as' выглядит более читаемым для меня. – 2010-02-09 08:03:28

Смежные вопросы