在程序集中嵌入 Global.asax
Embed Global.asax in assembly
是否可以将 Global.asax
文件嵌入到程序集中?当前,它表示为 Web 根目录中的一个文件。但我想将它作为资源存储在程序集中。
我不确定。您是否尝试过将 Build Action 设置为 Embedded Resource?您可以通过选择 global.asax 文件来做到这一点,然后该选项应该出现在您的 属性 window.
中
Ali Reza Dehdar
的答案是正确的(只需在文件属性中将Compile
更改为Embedded Resource
)并且可以使用反编译器看到结果:
是的,你可以。据我所知,你有三种选择:
- 使用 HttpModule 但要注意它有一些棘手的部分。例如 HttpModule Init 方法可能会被触发多次(这取决于应用程序池中的应用程序实例数)
- 使用 OWIN
- 替换 HttpApplication 类型 - 这个最适合我,但我没有在太多不同的情况和框架版本中测试过它。您在程序集中唯一需要做的就是粘贴以下内容:
.
using System.Web;
using System.Web.UI;
[assembly: PreApplicationStartMethod(typeof(MyAssembly.MyHttpApplication), nameof(MyAssembly.MyHttpApplication.Application_Register)]
namespace MyAssembly
{
public class MyHttpApplication : HttpApplication
{
public static void Application_Register()
{
PageParser.DefaultApplicationBaseType = typeof(MyHttpApplication);
}
protected void Application_Start()
{
// TODO: Your application startup magic :)
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
// TODO:
}
}
}
跟踪(或类似的东西):
- System.Web.UI.PageParser.DefaultApplicationBaseType
- System.Web.Compilation.BuildManager.GetGlobalAsaxType()
- System.Web.HttpApplicationFactory.CompileApplication()
希望对您有所帮助:)
是否可以将 Global.asax
文件嵌入到程序集中?当前,它表示为 Web 根目录中的一个文件。但我想将它作为资源存储在程序集中。
我不确定。您是否尝试过将 Build Action 设置为 Embedded Resource?您可以通过选择 global.asax 文件来做到这一点,然后该选项应该出现在您的 属性 window.
中Ali Reza Dehdar
的答案是正确的(只需在文件属性中将Compile
更改为Embedded Resource
)并且可以使用反编译器看到结果:
是的,你可以。据我所知,你有三种选择:
- 使用 HttpModule 但要注意它有一些棘手的部分。例如 HttpModule Init 方法可能会被触发多次(这取决于应用程序池中的应用程序实例数)
- 使用 OWIN
- 替换 HttpApplication 类型 - 这个最适合我,但我没有在太多不同的情况和框架版本中测试过它。您在程序集中唯一需要做的就是粘贴以下内容:
.
using System.Web;
using System.Web.UI;
[assembly: PreApplicationStartMethod(typeof(MyAssembly.MyHttpApplication), nameof(MyAssembly.MyHttpApplication.Application_Register)]
namespace MyAssembly
{
public class MyHttpApplication : HttpApplication
{
public static void Application_Register()
{
PageParser.DefaultApplicationBaseType = typeof(MyHttpApplication);
}
protected void Application_Start()
{
// TODO: Your application startup magic :)
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
// TODO:
}
}
}
跟踪(或类似的东西):
- System.Web.UI.PageParser.DefaultApplicationBaseType
- System.Web.Compilation.BuildManager.GetGlobalAsaxType()
- System.Web.HttpApplicationFactory.CompileApplication()
希望对您有所帮助:)