2011-01-11 12 views
0

WCFサービスのすべての要求に対してすべてのパラメータを記録しようとしています。これは私が使用する "IParameterInspector"を実装し、これまでのところ動作します。出力とIParameterInspector(WCF)のコンテキスト情報へのアクセス

public class ParameterInspector_for_RequestLogging : IParameterInspector 
{ 
    #region IParameterInspector Members 

    public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState) { 
      //Note: correlationState contains an object with contains the inputValues 
      //... 
      log.WriteEntry(
       new LogData(
        String.Format("   Req={0}, Time: {1}ms, Input-Parameter: '{2}', Output-Parameter: '{3}', ReturnValue: '{4}'" 
         , operationName 
         , Environment.TickCount - correlationStateData.RequestStartAt 
         , String.Join("','", inputParameter.ToArray()) 
         , String.Join("','", outputParameter.ToArray()) 
         , returnValue.ToString() 
         ) 
        ) 
       ); 

    } 
} 

Req=ABC, Time: 500ms, Input-Parameter: '123,ABC,zzz,55', Output-Parameter: '0', ReturnValue: '0'" 

だから私は2つの問題を抱えています。 1.入力パラメータと出力パラメータの正しい名前をどのように見つけることができますか。 2.コンテキスト情報を貼り付けるにはどうすればよいですか/コンテキスト情報にどうやってアクセスできますか?

User: CurrentUser (UserNumber) - Req=ABC, Time: 500ms 
    , Input-Parameter: '<int32>para1: 123, <string>Para2: ABC 
    ,<string>Para3: zzz, <ref byte>Para4: 55' 
    , Output-Parameter: '<byte> 0', ReturnValue: '<Int64> 0'" 

答えて

0

私は System.ServiceModel.OperationContext.Current.ServiceSecurityContext.PrimaryIdentityを使用してIParameterInspector以内に現在のユーザーを取得することができた​​

で探してみてください。

(ユーザ名と同じように)私は、次の出力を生成してみてください。

関連する問題