2

我创建了一个 .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 的交付和功能,而不强制他们安装它(OneClick、MSI 等)?

4

1 回答 1

1

因此,您想在完全信任的情况下将 .NET 程序集静默交付给客户端计算机,并让它在后台与 WCF 服务进行通信?这正是信任系统旨在防止的。

我认为您应该考虑 OneClick 部署。用户在安装与云通信的软件时应注意。

于 2009-11-02T15:54:15.933 回答