У меня есть созданная .Net DLL, которая реализует клиент WCF, который общается со службой WCF, позволяя конечному пользователю передавать данные на сервер, на котором находится служба.
Я использую эту DLL в клиентских программах, разработанных для работы, но теперь я хочу использовать эту .Net DLL на веб-странице, чтобы клиент мог быть доставлен конечному пользователю в сети.
ASP.Net обладает этой замечательной функцией, которая позволяет ссылаться на .Net DLL на веб-странице, используя шаблон тега объекта:
<object id="demolib" classid="DemoLib.dll#DemoLib.DemoClass"></object>
Это предупреждает клиентскую среду выполнения о том, что в .Net DLL доступны определенные функции (DemoLib.dll в приведенном выше коде), которые могут отсутствовать на клиентском компьютере. Если запрошенная функциональность не существует, DLL передается клиенту и настраивается в GAC клиента для использования веб-страницей.
Я заставил его работать локально, а также удаленно в среде полного доверия, без установщика. DLL доставляется через веб-страницу и без проблем устанавливается в GAC для конечного пользователя.
Проблемы возникают, когда я пытаюсь доставить DLL за пределы полного доверия. Я не хочу, чтобы конечные пользователи устанавливали сайт, к которому они подключаются, на полное доверие, чтобы получить доступ к DLL. У меня нет проблем со строгим присвоением имен и подписи .Net DLL с действующим сертификатом. Доверие к этой DLL должно быть неявным, но, похоже, это не так.
Я считаю, что должен быть способ, позволяющий пользователю авторизовать доставку и использование DLL, если они того пожелают, но я не смог смоделировать такую доставку без сбоев.
Тогда возникает вопрос: какую стратегию я должен использовать, чтобы позволить пользователю авторизовать доставку и функционирование DLL с помощью шаблона объекта выше, не вынуждая его установить it (OneClick, MSI и т. Д.)?