Полная ошибка - «Значение не может быть нулевым. Имя параметра: virtualPath». Это происходит в наших средах контроля качества и обучения (Win 2003 Server и IIS6), но, конечно, не поддается воспроизведению в отладчике. Что еще хуже, несмотря на разумный глобальный обработчик ошибок, ошибка не сопровождается трассировкой стека и ничего не записывается в журнал событий. Приложение представляет собой большое полностью глобализованное веб-приложение Asp.Net (VB), работающее на платформе 2.0 Framework. Он использует обычную структуру «App_LocalResources» для файлов resx и на сегодняшний день работает достаточно хорошо. В приложении есть несколько мест, где используется такой код:
Dim x As New Compilation.ExpressionBuilderContext(Control.TemplateControl)
Dim path As String = x.VirtualPath
Dim res As String = HttpContext.GetLocalResourceObject(path, resourceKey).ToString
Однако блок Try / Catch вокруг этого кода работает правильно, когда я заставляю переменную «path» быть равной нулю. Мы также используем этот синтаксис везде для заголовков столбцов сетки данных:
<asp:TemplateColumn HeaderText = "<%$ Resources:resHeader %>" >
Мы также используем значительное количество Ajax и постоянно динамически загружаем элементы управления ascx в заполнители. Если у кого-то есть понимание этого, я буду очень признателен за помощь.
Спасибо, Ларри





это может прозвучать глупо, но, черт возьми, со мной такое случалось раньше.
если вы скопируете и вставите свою ошибку, я заметил, что там написано «virtualPath» (строчная буква v); в то время как в вашем примере кода свойство, которое вы используете, имеет VirtualPath (верхний регистр V).
Кроме того, какое фактическое исключение вы получаете? исключение NullReferenceException?
Последующие действия - убедитесь, что на ваших серверах установлен надлежащий уровень исправлений.
Основной причиной этого оказались 3 ВМ QA, у которых не было
.
2.0 .Net Framework SP1 установлен.