挂钩到HttpApplication.带有运行时生成处理程序的BeginRequest导致NullReference异常
本文关键字:程序 处理 BeginRequest 导致 异常 NullReference HttpApplication 运行时 | 更新日期: 2023-09-27 17:50:43
在连接到事件后。BeginRequest(和其他一些HttpApplication事件)与运行时生成的委托,如
var expr = Expression.Lambda<EventHandler>(Expression.Empty(),
new[]
{
Expression.Parameter(typeof (object)),
Expression.Parameter(typeof (EventArgs))
});
var handler = expr.Compile();
application.BeginRequest += handler;
我得到一个错误:
NullReferenceException: Object reference not set to an instance of an object.]
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +120
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +114
环境:ASP。4 .
净如果在另一个委托调用中调用该委托,则异常传递:application.BeginRequest += (s, e) =>{handler(s, e);};
这个方法不能使我满意。
该行为似乎是特定于HttpApplication的,因为其他类以预期的方式行为。有没有人能解释一下这个问题?
发现,这是因为访问了MemberInfo.ReflectedType.ToString()
。在动态方法中MemberInfo。ReflectedType为Null。如果方法是在TypeBuilder生成的类型中创建的,