Причина, по которой это не работает, заключается в том, что ваш ASP-код выполняется в контексте полной платформы .NET и при попытке создания экземпляра элемента управления Silverligt - как говорится в исключении - сборка System.Xml
с версией 2.0. 5.0 не загружается / не найден.
Обратите внимание на версию: 2.0.5.0. Все базовые библиотеки Silverlight имеют эту версию вместо «нормальной» версии .NET, такой как 2.0.0.0.
Это не случайно - Silverlight работает в контексте небольшого CLR, который является подмножеством обычного CLR. Это не тот же CLR, хотя большая его часть полностью идентична, и хотя ваш исходный код на C # точно такой же, время выполнения не идентично.
В настоящее время вы не можете смешивать код Silverlight с полным кодом на основе .NET, например ASP.NET.
В Microsoft проделана определенная работа по извлечению общего ядра обычных .NET и Silverlight (на самом деле пара библиотек) для лучшего обмена, но это еще не доступно для общественности.
Также обратите внимание, что если код source одной из ваших библиотек Silverlight 4.0 не использует специальный код Silverlight, вы можете загрузить его в обычный процесс .NET, но обратное, очевидно, невозможно ( Silverlight является подмножеством, а не наоборот).
Помимо всего этого, вы можете достичь своей цели:
- Запуск OOB приложения Silverlight на сервере и связь со страницами ASP.NET через какой-то механизм IPC
- Перекомпилируйте код в WPF и загрузите его; когда я говорю «перекомпилировать», я действительно имею в виду адаптацию / рефакторинг, поскольку Silverlight UI не является чистым подмножеством WPF
Ни одна из особенностей не проста, хотя я склоняюсь ко второму варианту, он чище.