如何获取Module.Function调用者

时间:2012-02-28 21:50:23

标签: vb.net module

我编写了一系列ASP.NET页面,其中有几种常用方法。在我的无知中,我能够找到将这些常用方法移动到单独文件的最佳方法是在模块中。但是,我需要一种方法来识别哪个页面是被调用的方法?

例如,我有一个带有以下签名的方法调用WriteToErrorLog

WriteToErrorLog(ByVal sender As Page, ByVal Source As String, ByVal Message As String, ByVal StackTrace As String)

由于这是在模块中,因此发件人页面未知。我想知道是否有办法访问它?我希望如果发生错误,那么堆栈跟踪应该揭示出什么导致错误的播放。 我是否真的需要传入页面,还是可以通过其他方式检索此功能和调用功能?

提前致谢:)

1 个答案:

答案 0 :(得分:1)

即使在像Module这样的静态/共享上下文中,您也可以获得对当前HttpHandler(页面)的引用。

即使在HttpContext之外,以下是故障安全的(例如,从Winforms项目引用的类库):

If HttpContext.Current IsNot Nothing Then
    Dim page = TryCast(HttpContext.Current.Handler, Page)
    If page IsNot Nothing Then
        ' Do something with it '
    End If
End If

HttpContext.CurrentHandler

编辑:您可以通过以下方式获取调用方法的名称:

Dim method = New StackTrace().GetFrame(1).GetMethod().Name

http://www.csharp-examples.net/reflection-calling-method-name/