在每个页面请求上验证许可证密钥

时间:2011-09-07 11:12:33

标签: c# asp.net

我创建了一个Web应用程序,我希望通过源代码销售给各个客户端。这个应用程序包含一个由我创建的DLL,它有各种方法,其中有一个名为ValidateLicenceKey()的方法。我希望每个页面调用此方法以获得有效许可证。要做到这一点,有各种方式(据我所知) -

  1. 创建一个BaseClass并在baseclass中调用ValidateLicenceKey()方法并在每个页面上继承此类,以便在每个页面请求上调用此方法。
  2. 在Global.asax文件的Application_Start / Session_Start事件中调用ValidateLicenceKey()方法,这样即使页面不是从Baseclass继承,也会调用此方法。
  3. 使用HttpModule并调用ValidateLicenceKey()方法并在web.config文件中定义
  4. 我正在为客户提供在应用程序中添加新页面/控件的灵活性,以及​​他可以根据他的要求编辑现有代码。

    现在我的问题是 - 由于客户端具有DLL的源代码,因此可以通过

    禁用ValidateLicenceKey功能
    1. 从所有现有页面中删除Baseclass继承,以及在他创建的新页面中不实现Baseclass继承。
    2. 注释调用Global.asax文件中的ValidateLicenceKey()方法的行。
    3. 在定义httpmodule
    4. 的web.config文件中注释该行

      那么我如何强迫他们调用此方法。

      他们有什么方法可以解决这个问题吗? 请帮忙。

1 个答案:

答案 0 :(得分:0)

我将添加另一种方法:在类中放置一个静态构造函数。因此,如果调用了类,则始终会调用静态构造函数。在静态初始化程序中,您可以放置​​代码。

class MyClass
{
    static MyClass()
    {
       if (!ValidateLicenceKey())
       {
           throw new Exception("Invalid License");
       }
    }
}

显然,这不会通过源代码篡改来保护您。