2012-02-28 18 views
0

私は一連のASP.NETページを作成しましたが、その中にはいくつかの共通メソッドがあります。私が気づかないうちに、これらの一般的な方法を別々のファイルに移動するための最良の方法は、モジュール内にありました。しかし、私が必要とするのは、どのページからメソッドが呼び出されたかを識別する方法です。これはモジュールであるため、送信者のページが不明であるModule.Function呼び出し元を取得する方法

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

は例えば、私は、次のシグネチャを持つメソッド呼び出しWriteToErrorLogを持っています。私はそれにアクセスする方法があるかどうか知りたいですか?私は、エラーが発生した場合、スタックトレースは、あなたをエラーの原因となったもののプレイ・バイ・プレイを明らかにしなければならないことが予想されます。 私は実際にページを渡す必要がありますか、これと他の方法で呼び出し関数を取得できますか?事前に

感謝:)

答えて

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/

:次のように
+0

今、それは私の脳heheで遠く離れてファイルするために、素晴らしい一口です。このページのオブジェクトから、そのページのどの機能がモジュールの呼び出しを担当しているかを特定できますか? Thanks again again Tim :) – Chiramisu

+0

@Chiramisu:side-note:この方法でセッションにアクセスすることもできます:['HttpContext.Current.Session'](http://msdn.microsoft.com/en-us/library/system .web.httpcontext.session%28v =対80%29.aspx)現在のリクエストのセッションにマップする;) –

+1

@Chiramisu:私の答えを編集して、呼び出し元のメソッドを取得する方法を追加しました。 –