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