仅编译/预编译 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的主要内容,如果未能解决你的问题,请参考以下文章