我编写了一系列ASP.NET页面,其中有几种常用方法。在我的无知中,我能够找到将这些常用方法移动到单独文件的最佳方法是在模块中。但是,我需要一种方法来识别哪个页面是被调用的方法?
例如,我有一个带有以下签名的方法调用WriteToErrorLog
:
WriteToErrorLog(ByVal sender As Page, ByVal Source As String, ByVal Message As String, ByVal StackTrace As String)
由于这是在模块中,因此发件人页面未知。我想知道是否有办法访问它?我希望如果发生错误,那么堆栈跟踪应该揭示出什么导致错误的播放。 我是否真的需要传入页面,还是可以通过其他方式检索此功能和调用功能?
提前致谢:)
答案 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
编辑:您可以通过以下方式获取调用方法的名称:
Dim method = New StackTrace().GetFrame(1).GetMethod().Name
http://www.csharp-examples.net/reflection-calling-method-name/