0

我开发了一系列 .NET 类库,我不希望它们从网站上运行。也就是说,用户只能通过 Windows 桌面应用程序使用/调用我的库。例如,我不希望用户能够在网站上的 ASP.NET Web 应用程序中使用这些库。有没有办法做到这一点?

4

4 回答 4

4

不会。即使您要阻止库在 IIS 下运行,仍然有人可以使用您的库运行桌面应用程序,并通过 IIS 与它进行通信。

于 2010-02-09T15:41:17.447 回答
4

HttpRuntime.AppDomainAppVirtualPath您可以通过检查是否不存在null并抛出异常来阻止您的代码在服务器端 ASP.Net AppDomain 中运行。

但是,这不会阻止某人在与 ASP.Net 不同的 AppDomain 中运行您的应用程序,当然也不会阻止某人将应用程序作为服务运行并使用 WCF 或命名管道将其公开给 ASP.Net。

你为什么要这样做?

编辑:要回答您的评论,这也是不可能做到完美的。您可以检查 HOST 标头,有人可以使用SimpleWorkerRequest.
此外,任何事情都可以通过编辑程序集来解决。(没有完美的混淆器)

于 2010-02-09T15:41:36.997 回答
1

不,不是。

但是,根据您的应用程序是什么,您可能会削弱它的应用程序以供在线使用。如果您使用命名互斥锁,您可以确保在任何时候都只启动 1 个操作。与启动桌面应用程序的 1 个实例类似,您确保对 DoWork() 的所有调用都是连续的。

这意味着使用网络,他们无法重复拨打电话。但这确实取决于您如何设想它在桌面应用程序中的使用。

于 2010-02-09T15:45:01.667 回答
0

就像其他解决方案不是很安全一样,但是您可以使用Application.MessageLoop检查消息循环是否正在运行,这对于 WinForms 应用程序通常应该是正确的,但对于 Web 应用程序则不是。

于 2010-02-09T15:47:00.963 回答