如何在Internet上限制/阻止.net代码执行?

时间:2010-02-09 15:38:30

标签: .net class-library cas

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

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

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

然而,这不会阻止某人在ASP.Net的单独AppDomain中运行您的应用程序,它肯定不会阻止某人将应用程序作为服务运行并使用WCF或命名将其公开给ASP.Net管道

你为什么要这样做?

编辑:要回答您的评论,那也无法做到完美。 您可以检查HOST标头,有人可以使用SimpleWorkerRequest将其击败 此外,通过编辑程序集可以打败任何东西。 (没有混淆器是完美的)

答案 2 :(得分:1)

不,不是真的。

但是,根据您的应用程序,您可能会削弱其在线使用的应用程序。如果使用命名互斥锁,则可以确保一次只启动1次操作。与启动桌面应用程序的1个实例类似,您可以确保所有对DoWork()的调用都是顺序的。

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

答案 3 :(得分:0)

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