Регистрация DLL взаимодействия .NET COM работает из сборки проекта, но не из regasm - PullRequest
0 голосов
/ 22 июля 2010

Я пытаюсь развернуть DLL взаимодействия .NET COM для веб-приложения. Во время разработки для сборки, которая должна регистрироваться для взаимодействия COM, у меня отмечен параметр «Регистрация для взаимодействия COM» в свойствах сборки. В этом методе все работает просто отлично.

Однако, когда я развертываю приложение ASP.NET и пытаюсь зарегистрировать сборку вручную, используя инструмент regasm, он не работает. (

Моя конечная цель такова:

Когда пользователь заходит на сайт и не регистрирует объект, пользователь может зарегистрировать dll, используя ClickOnce. После этого пользователю не нужно ничего запрашивать, и все должно работать!

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 22 июля 2010

Как и следовало ожидать, веб-приложение, которое пытается установить COM DLL на клиентском компьютере, столкнется с множеством проблем безопасности.Пользователь без привилегий администратора может установить код .NET (включая COM-видимые классы) через ClickOnce, но я думаю, что вы можете обнаружить, что даже это не достигает того, чего вы хотите ...

Установки ClickOnceразвернут в неизвестном месте под разделом профиля пользователя файловой системы.Все компоненты COM в развернутом приложении видны внутри приложения, но не видны в других местах на клиентском компьютере.В частности, клиентский сценарий, запущенный в браузере, не сможет вызывать COM-компоненты, развернутые через ClickOnce.

Развертывание ClickOnce совершенно сознательно хранит развернутый код отдельно от остальной системы.

Я могувы не увидите, как ваше веб-приложение может развернуть и затем взаимодействовать с COM DLL, если только у пользователя нет прав администратора и он явно не регистрирует DLL.В общем, я думаю, что это хорошая вещь .

У кого-то еще может быть лучшее предложение, но я вижу единственный способ продвинуться вперед - создать функциональность, использующую эту DLLв приложение .NET, которое работает на рабочем столе.Это можно развернуть с помощью ClickOnce и вызвать по ссылке в вашем веб-приложении.Это может даже разместить данные на вашем веб-сервере.Но я не вижу способа взаимодействия с браузером.

1 голос
/ 22 июля 2010

Не могу помочь вам с вещами ClickOnce, но может быть вам нужно использовать параметр / codebase для regasm (если вы не устанавливаете его в GAC), например

regasm AssemblyName.dll /codebase

Вам также понадобится быть администратором, чтобы работать в Vista / Windows 7.

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