Я использую XML-файл в качестве встроенного ресурса для загрузки XDocument. Мы используем следующий код для получения соответствующего файла из сборки:
XDocument xd = new XDocument();
Assembly assembly = null;
try
{
assembly = Assembly.GetExecutingAssembly();
}
catch(Exception ex)
{
//Write exception to server event log
}
try
{
if(assembly != null)
{
using(StreamReader sr = new
StreamReader(assembly.GetManifestResourceStream("assemblyPath")))
{
using(XmlTextReader xtr = new XmlTextReader(sr))
{
xd = XDocument.Load(xtr);
}
}
}
}
catch(Exception ex)
{
//Write exception to server event log
}
Таким образом, когда код развернут, мы время от времени переходим на страницу, и из встроенного документа ничего не загружается. Когда мы проверяем журнал событий, ошибок нет. Если пользователь просто обновит страницу, он загрузится нормально. Это привело меня к мысли, что по какой-то причине assembly = Assembly.GetExecutingAssembly();
иногда возвращает ноль, и способ написания кода не является ошибкой. Итак, мой вопрос: почему бы Assembly.GetExecutingAssembly();
возвращать ноль? Я нашел несколько статей, в которых говорилось о том, что иногда возникают ошибки с неуправляемым кодом, но это приложение написано на C # и развернуто с помощью проекта установки.
Код был изначально написан без кода избежания ошибок. Он был добавлен, чтобы пользователи не получали экран ошибок. Исключения записываются в журнал событий сервера.