仅编译/预编译global.asax

时间:2011-10-17 00:07:29

标签: c# asp.net compilation global-asax precompile

有没有办法将global.asax文件编译或预编译到dll并在bin文件夹中使用它?

我在此文件中有许可证逻辑,我不会编译其他文件。

我还可以检查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();
       }
    }

1 个答案:

答案 0 :(得分: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应用程序。