Ошибка Silverlight Загрузка DLL во время выполнения - PullRequest
0 голосов
/ 25 января 2011

У меня есть приложение silverlight, которое загружает файл dll, расположенный в папке ClientBin, во время выполнения через относительный Uri. Он отлично работает на моей локальной машине, но при развертывании на сервере он, похоже, постоянно терпит неудачу при попытке загрузить файл:

private void OnAssemblyOpened(object sender, OpenReadCompletedEventArgs e)
{  
    AssemblyPart asmbPart = new AssemblyPart();

    MessageBox.Show(e.ToString());
    Assembly asmb = asmbPart.Load(e.Result) // this line causes the exception
    ...
}

Конечно, Silverlight не дает мне полезной ошибки - просто обычная ерунда NotFound. Есть ли шаг, который я пропустил при развертывании этого? Разрешения или что-то? Файл DLL определенно находится в папке ClientBin, кстати - я это проверил! :)

Ответы [ 4 ]

1 голос
/ 25 января 2011

Другой вариант - сжать dll в zip-файл, а затем загрузить zip-файл. Таким образом, вам не нужно играть с конфигурацией сервера.

Как загрузить и распаковать файл из Zip-файла, дано в этом ответе .

Код по сути будет выглядеть так: -

AssemblyPart asmbPart = new AssemblyPart();

var zipRes = new StreamResourceInfo(args.Result, null)
var assemRes = Application.GetResourceStream(zipRes, new Uri("YourAssembly.dll", UriKind.Relative));

Assembly asmb = asmbPart.Load(assemRes.Stream)
0 голосов
/ 14 февраля 2012

На самом деле, просто измените разрешения на выполнение в вашем приложении только на сценарии, вместо сценариев и исполняемых файлов, должно работать нормально.

0 голосов
/ 25 января 2011

Проблема заключалась в том, что я запускаю IIS6, и dll не могут быть предоставлены без переключения разрешений на выполнение на сайте на None (что, очевидно, мешает запуску приложения Silverlight), поэтому я законно получил 404 - кто бы мог подумать!!

Я создал виртуальный каталог для своих скриптов на верхнем уровне моего сайта и вставил туда dll, переключил разрешения на выполнение для виртуального на None, обновил uri до ../scripts/ControlLibraries.длл и работа хорошая!

0 голосов
/ 25 января 2011

Попробуйте использовать абсолютный путь для развернутого приложения и укажите свой URL-адрес + путь к клинике в качестве пути.
Возможно, вы получили ошибку из-за неверного пути на сервере (если вы не изменили его, и это все еще путь к вашей локальной машине).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...