2012-02-28 43 views
0

我写了一系列ASP.NET页面,其中包含几种常用方法。在我的无知中,我能够发现将这些常用方法移动到单独文件中的最佳方式是在模块中。但是,我需要的是一种确定从哪个页面调用该方法的方法?如何获取Module.Function来电者

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

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

由于这是在模块中,发送者页面是未知的。我想知道是否有办法访问它?我预计,如果发生错误,堆栈跟踪应该揭示出什么使你发现错误的播放。 我是否真的需要传入页面,还是可以通过其他方式检索此调用函数?

感谢提前:)

回答

1

你可以得到参考目前的HttpHandler(页),即使在静态/共享上下文就像在一个Module

以下是故障安全的,即使外面的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/

+0

O.o现在,这是一个美味的食物,在我的大脑中归档,嘿嘿。现在我可以从该页面对象中识别出该页面上哪个功能负责调用该模块?再次感谢蒂姆:) – Chiramisu 2012-02-28 22:04:09

+0

@Chiramisu:旁注:你也可以这样访问会话:['HttpContext.Current.Session'](http://msdn.microsoft.com/en-us/library/system .web.httpcontext.session%28v = vs.80%29.aspx)映射到当前请求的会话;) – 2012-02-28 22:15:27

+1

@Chiramisu:编辑我的答案以添加您可以获得调用方法的方式。 – 2012-02-28 22:20:59

相关问题