ASP.net LoadAssembly динамически - PullRequest
1 голос
/ 26 июля 2011

Я пытаюсь загрузить сборку во время выполнения. Для этого я использую следующую строку:

System.Reflection.Assembly.Load(file.FullName);

файл является объектом FileInfo, поэтому file.FullName возвращает полный путь к файлу в файловой системе, например: c: \ mywebsite \ dlls \ myassembly.dll

Когда я пытаюсь выполнить строку выше, я получаю следующую ошибку:

Не удалось загрузить файл или сборку 'c: \ mywebsite \ dlls \ myassembly.dll' или одна из его зависимостей. Данное имя сборки или кодовая база были недействительным. (Исключение из HRESULT: 0x80131047)

Я уверен, что это не проблема зависимости, и я не знаю, что такое «неверная кодовая база»

Обратите внимание, что если я помещаю сборку непосредственно в папку BIN сайта, все работает правильно, я просто не могу выполнить загрузку динамически.

Ответы [ 5 ]

3 голосов
/ 26 июля 2011

Чтобы дополнить ответ Schroedingers Cat, вы можете посмотреть Assembly.LoadFile , если у вас есть только путь к файлу.Но при запуске из ASP.NET могут возникнуть проблемы с безопасностью, для которых может потребоваться настройка разрешений в файловой системе, чтобы ваш веб-сайт мог получить доступ к файлу.

1 голос
/ 26 июля 2011

Это проблема безопасности / разрешений - вы не можете загружать сборки из внешнего хранилища без соответствующих разрешений (в зависимости от используемой учетной записи) ...

1 голос
/ 26 июля 2011

Вам необходимо использовать «длинную форму имени сборки», а не путь к файлу кода: см. Эту ссылку

0 голосов
/ 26 июля 2011

Этот метод ожидает имя сборки.Вам нужно Assembly.LoadFrom , хотя вы должны быть осторожны с разрешениями при вызове этого из приложения .

См. Здесьдля получения дополнительной информации: Как вызвать управляемый файл DLL в C #?

0 голосов
/ 26 июля 2011

Это, вероятно, связано с разрешениями, обычно веб-сайт asp.net не будет иметь доступа (в частности, права на выполнение) к файлам вне своего корневого каталога.

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