asp.net – 在没有Global.asax的情况下处理应用程序范围的事件
|
由于各种原因,我的项目没有“global.asax”,我无法改变它(它是一个组件).此外,我无法访问web.config,因此httpModule也不是一个选项. 有没有办法处理应用程序范围的事件,例如在这种情况下的“BeginRequest”? 我尝试了这个并没有用,有人可以解释原因吗?看起来像一个bug: HttpContext.Current.ApplicationInstance.BeginRequest += MyStaticMethod; 解决方法不,这不是一个错误.事件处理程序只能在IHttpModule初始化期间绑定到HttpApplication事件,并且您尝试在Page_Init(我的假设)中的某处添加它.因此,您需要动态地向所需事件处理程序注册一个http模块.如果你在.NET 4下有一个好消息 – 有PreApplicationStartMethodAttribute属性(引用:Three Hidden Extensibility Gems in ASP.NET 4):
所以剩下的事情非常简单:你需要创建自己的http模块,包含你想要的事件处理程序,模块初始化器和属性到AssemblyInfo.cs文件.这是一个模块示例: public class MyModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
public void Dispose()
{
}
void context_BeginRequest(object sender,EventArgs e)
{
}
}
要动态注册模块,您可以使用Microsoft.Web.Infrastructure.dll程序集中的 public class Initializer
{
public static void Initialize()
{
DynamicModuleUtility.RegisterModule(typeof(MyModule));
}
}
唯一剩下的就是为AssemblyInfo.cs添加必要的属性: [assembly: PreApplicationStartMethod(typeof(Initializer),"Initialize")] (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET MVC 3 Razor – jQuery Intellisense
- IIS7集成vs经典流水线 – 哪些使用更多的ASP.NET线程?
- asp.net – 如何在标记中使用扩展和实用程序方法?
- asp.net – Javascript之前asp:ButtonField点击
- ASP.NET表单中的Paypal表单
- 如何在ASP.NET MVC应用程序中组织JavaScript代码
- asp.net-mvc – Asp.net Identity使用什么算法来加密密码?
- 如何最好地生成CSV(逗号分隔的文本文件)以便下载ASP.NET?
- asp.net – 在jQuery对话框中的窗体中,MVC中通常采用的方法
- asp.net-mvc – 在ASP.NET MVC项目中访问elmah.axd时出现“
- asp.net-mvc – MVC 3 Url Helper提供不正确的UR
- 授权 – ASP.NET Web API基本身份验证授权标头
- asp.net-mvc – 重命名重构在强类型剃刀视图中为
- asp.net-mvc – ASP.NET MVC:具有POST Action参
- 身份验证 – 禁止ASP.NET Core中的API URL重定向
- asp.net – 304未修改静态文件
- asp.net-mvc-2 – Plus()在MVC中的参数引起404在
- asp.net – 如何使Visual Studio在从代码页面击中
- ASP.net MVC v2 – 调试模型绑定问题 – BUG?
- ASP.NET动态数据TextSearch自定义过滤器模板
