8
我希望以编程方式取消订阅事件,该事件已连线。如何取消订阅此.NET事件?
我想知道如何取消订阅EndRequest
活动。
我不确定如何做到这一点,考虑到我使用的是内联代码。 (这是正确的技术术语?)
我知道我可以使用some.Event -= MethodName
来取消订阅..但我没有方法名称,在这里。
我使用内联代码的原因是因为我想引用一个在事件外定义的变量(我需要......但感觉很臭......我觉得我需要通过它)。
有什么建议吗?
代码的时间..
public void Init(HttpApplication httpApplication)
{
httpApplication.EndRequest += (sender, e) =>
{
if (some logic)
HandleCustomErrors(httpApplication, sender, e,
(HttpStatusCode)httpApplication.Response.StatusCode);
};
httpApplication.Error += (sender, e) =>
HandleCustomErrors(httpApplication, sender, e);
}
private static void HandleCustomErrors(HttpApplication httpApplication,
object sender, EventArgs e,
HttpStatusCode httpStatusCode =
HttpStatusCode.InternalServerError)
{ ... }
这仅仅是一些示例代码我,让我在ASP.NET
应用程序处理错误。
注意:请不要将此变成关于ASP.NET错误处理的讨论。我只是在玩事件和使用这些事件来处理一些样本R/& D /学习。
从技术上讲,您可以:'httpApplication.EndRequest = null',但会取消订阅**所有**。 – CodingGorilla
+1这是做到这一点的方法。 – Joe
真棒:)作品!那么..代码是完美的,但我的用法是错误的。我试图在LifeCycle初始化后取消订阅事件。因此,ASP.NET框架会抛出一个令人讨厌的错误,说“你不能在init步骤后修改这些事件”。卫生署! –