Исходные данные:
Silverlight 4, 5
Out Of Browser Application
Windows 8 x64
Брандмауэры отключены
У меня следующая проблема: на моей машине любое приложение Silverlight при любом обращении в сеть (WebClient, WCF и т.д.) очень быстро возвращает WebException «Удаленный сервер возвратил ошибку: Not Found». Никакой более конкретной информации в исключении нет.
От сервера не зависит — пробую просто скачать HTML по любому адресу — получаю ошибку. Конкретно интересует доступ к удаленному сервису по WCF, но не работают любые обращения по сети, даже на localhost.
Наступает эта ситуация совершенно неожиданно — минуту назад всё работало, при следующем запуске всё уже не работает. От приложения не зависит — создаю новые тестовые — та же история. Тестовый проект, созданный и работающий на другой машине, на моей машине выдает ту же ошибку.
Более того, приложение, запущенное в VirtualBox на моей же машине прекрасно себя чувствует.
Сталкиваюсь с этим в третий раз за короткое время. Первый раз пришлось переустановить систему, второй раз — восстановлением системы (стандартным) на пару дней назад.
Ни перезагрузкой компьютера, ни удалением/отключением сетевых интерфейсов, ни переустановкой Silverlight Runtime проблема не решается.
Возможно кто-нибудь сталкивался с подобным поведением?
Решение найдено, ищу ответ на «почему» и «какие пути обхода».
Способ воспроизведения (у меня работает гарантированно):
— Запускаем SL приложение
— Отключаем сетевое подключение (например netsh interface set interface name=«Подключение по локальной сети 2» admin=DISABLED)
— Из SL обращаемся в сеть — получаем законный NotFound
— Включаем сетевое подключение
— SL по-прежнему не видит сеть.
В чем дело:
— HKU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\GlobalUserOffline меняется с 0x00000000 на 0x00000001.
Т.е. IE переходит в режим работы Offline. А так как SL работает на базе IE, то и он тоже.
Беда в том, что в обратную сторону SL самостоятельно больше не переключается.
Для возвращения его к жизни нужно либо вручную поменять 1 на 0, либо… просто запустить IE.
Очень похоже на багу Microsoft.
Ничего. Ни fiddler, ни WireShark. Очень похоже на то, что запросы до сетевого драйвера и не доходят — блокируются в самом SL ещё на стадии формирования — уж больно быстро появляется сообщение об ошибке, почти мгновенно.
Забыл добавить — тот же самый код в обычном консольном приложении на этой же машине отрабатывает на ура и перехватывается WireShark.
Беда только с Silverlight.