.net удаленная зависимость / ссылка проблема - PullRequest
0 голосов
/ 04 июня 2009

Я занимаюсь обслуживанием веб-приложения asp.net, которое использует удаленное взаимодействие для вызова объекта удаленного сервера, чтобы заказать отчет о кредитных операциях. Вызов «работает на моем компьютере», но выдает исключение «невозможно загрузить файл или сборку« choicepointClue »» при запуске с рабочего сервера (на котором работает 64-разрядная версия .net framework).

Я решил проблему, скопировав choicepointClue.dll в каталог bin веб-приложения. Но я не понимаю, зачем это нужно, поскольку это зависимость от библиотеки удаленного сервера, а не от клиента.

Дерево зависимостей выглядит так:

Веб-приложение -> choicepointClueClient -> choicepointRemoteAgent -> choicepointClue

Нет интерфейса, определенного для класса в библиотеке choicepointRemoteAgent (как и должно быть), поэтому на него напрямую ссылается choicepointClueClient.

Класс из choicepointRemoteAgent создается с использованием Activator.GetObject (). Именно в этот момент я ожидал, что choicepointClue.dll будет загружен на удаленный сервер вместо того, чтобы среда выполнения пыталась загрузить его из каталога bin веб-приложения.

Одна теория, которая пришла мне в голову, заключается в том, что существует разница между загрузкой сборок в x64 и x86.

Так что на x64 он пытается загрузить choicepointClue, как только он загружает choicepointRemoteAgent, где на x86 он не пытается загрузить chiocepointClue до тех пор, пока он не будет явно вызван?

Очевидно, я понятия не имею, что здесь происходит. Кто-нибудь может пролить свет на это?

1 Ответ

2 голосов
/ 05 июня 2009

Если используемый тип определен в choicepointClue.dll, он должен существовать как на стороне клиента, так и на стороне удаленного взаимодействия.

Клиенту необходимо знать информацию о типе создаваемого объекта, чтобы работать с ним. Это не означает, что он создается на клиенте, но для того, чтобы знать, как работать с объектом (даже удаленно), базовые интерфейсы должны быть известны с обеих сторон.

...