Silverlight 4 / строки ресурсов отладки .NET 4

#silverlight #silverlight-4.0 #.net-4.0 #error-handling

#silverlight #silverlight-4.0 #.net-4.0 #обработка ошибок

Вопрос:

Недавно я столкнулся со странной вещью. На некоторых серверах моей компании при распечатке сообщения об исключении (да, плохое, я знаю. Это для отладки), фактическое сообщение не отображается. Вместо этого он отображает ключ для внешнего строкового ресурса и сообщает, что «Строки ресурсов отладки недоступны»

После некоторых исследований я пришел к следующему: в режиме выпуска Silverlight не упаковывает xap с библиотеками DLL, содержащими фактические сообщения об ошибках, в целях экономии места.

Я нашел обходные пути для СТАРЫХ версий, но ничего для 4. Похоже, что существуют версии для разработчиков среды выполнения SL 2 и 3, которые будут автоматически устранять ошибки, но я не могу найти ни одной для SL 4.

Итак, мой вопрос заключается в следующем:

Что, черт возьми, мне нужно сделать с моим приложением / компьютером SL 4, чтобы я мог видеть полные, подробные ошибки, когда он находится в режиме выпуска?

Комментарии:

1. Отличный вопрос, я только что принял это в прошлом, но это было бы здорово для улучшения отчетов о сбоях.

2. Другая досадная вещь заключается в том, что у MS есть неясный подраздел их веб-сайта SL, который может предоставить подробную информацию об этих ошибках, но, похоже, в нем нет их всех.

3. Среду выполнения разработчика можно найти на Silverlight.net страница «Начало работы».

Ответ №1:

Вы можете загрузить среду выполнения разработчика (которая содержит полные строки исключений) со страницы GetStarted — http://www.silverlight.net/getstarted / — найдите «Среды выполнения разработчика для Windows и OSX», это в нижней части страницы.

Ответ №2:

Хотя отвечать уже слишком поздно, это может помочь кому-то еще. У нас есть веб-приложение, использующее Silverlight 4, установленное в различных тестовых средах. Это веб-приложение использует более одной службы WCF. Все сайты тестовой среды, кроме одного, постоянно завершались сбоем с сообщением «Строки ресурсов для отладки недоступны». К счастью, реальное исключение было проглочено. Поскольку это приложение Silverlight, не велось протоколирование, и всегда казалось, что в компоненте Silverlight что-то не работает. Я подключил приложение в моей среде разработки к этой конкретной тестовой среде и обнаружил, что проблема на самом деле заключалась в одной из служб WCF. Я исправил проблему на стороне службы, и у компонента SL перестала возникать эта проблема.

Почему произошел сбой WCF?

Служба WCF содержала следующий код в конструкторе:

 public MyService()
    {
        //Create an instance of Data Lookup service asycnchronously.
        if (_dataLookupSrvc == null)
        {
            try
            {
                System.Threading.Tasks.Task.Factory.StartNew(() => _dataLookupSrvc = new LookupDataService.LookupDataService());
            }
            catch (Exception ex)
            {
                _log.Error<Exception>(ex);
            }
        }
    }
  

Кто-то переместил базовый LookupDataService.dll из служебной папки вызывает сбой конструктора, но не сразу. Поскольку экземпляр LookupDataService был создан анонимным методом, регистрация исключений в этом методе никогда не выполнялась. Как только LookupDataService.библиотека dll была удалена из служебной папки, сообщение «Строки ресурсов отладки недоступны» исчезло.

Это была забавная погоня за несбыточным!

Ответ №3:

Вы уже проверили средство просмотра событий на компьютере, где произошел сбой приложения? Пуск-> Выполнить. eventvwr