2011-10-17 67 views
1

有沒有辦法編譯或預編譯global.asax文件到dll並在bin文件夾中使用它?僅編譯/預編譯global.asax

我在這個文件中有一個許可證邏輯,其他文件不會被我編譯。

我也可以檢查dll本身是否存在於bin文件夾中。

void Application_BeginRequest(object sender, EventArgs e) 
    { 
     //Application is allowed to run only on specific domains 
     string[] safeDomains = new string[] { "localhost" }; 
     if(!((IList)safeDomains).Contains(Request.ServerVariables["SERVER_NAME"])) 
     { 
      Response.Write("Thisweb application is licensed to run only on: " 
      + String.Join(", ", safeDomains)); 
      Response.End(); 
     } 
    } 
+2

這是否比編譯你的許可證代碼到一個程序集並引用來自global.asax(和/或web.config)更好?我認爲那裏有實用的東西,所以他們不能只是刪除它,沒有它的工作? – Rup

+0

反正人們可以反編譯它,但這種人非常有限:) –

+0

@HasanGürsoy你有沒有時間嘗試我建議的方法? –

回答

3

通過在Application指令中指定Inherits屬性,可以將代碼與global.asax文件分開。現在,您不必在Global.asax文件中編寫代碼。

<%@ Application Inherits="Company.LicensedApplication" %> 

實際上,這是Global.asax中唯一需要的代碼行。相反,你需要一個單獨的C#文件,在其中寫代碼的應用程序類:

namespace Company 
{ 
    public class LicensedApplication : System.Web.HttpApplication 
    { 
     void Application_BeginRequest(object sender, EventArgs e) 
     { 
      // Check license here 
     } 
    } 
} 

現在你可以安裝在bin文件夾編譯應用程序類的Web應用程序。

+0

我們如何觸發從任何頁面編譯此文件 – Learning