仅编译/预编译 global.asax

Posted

技术标签:

【中文标题】仅编译/预编译 global.asax【英文标题】:Compile/Pre-compile global.asax only 【发布时间】:2011-10-17 00:07:28 【问题描述】:

有没有办法将 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();
       
    

【问题讨论】:

这是否比将您的许可证代码编译为程序集并从 global.asax(和/或 web.config)中引用它更好?我想那里也有实用的东西,所以他们不能删除它并且没有它就可以工作吗? 反正人家可以反编译但是这种人是非常有限的:) @HasanGürsoy 你有时间尝试我建议的方法吗? 【参考方案1】:

您可以通过在 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 应用程序。

【讨论】:

我们如何从任何页面触发该文件的编译

以上是关于仅编译/预编译 global.asax的主要内容,如果未能解决你的问题,请参考以下文章

播放预编译命令仅在预编译文件夹中生成一个类文件,而不为控制器、模型等生成类文件

SQL 预编译语句

rake assets:预编译很慢

SWIG C++ 预编译 DLL

仅针对 Rails 中的一个文件进行实时资产编译

mybatis中预编译sql与非预编译sql