【问题标题】:access context-informationes from IParameterInspector (WCF)从 IParameterInspector (WCF) 访问上下文信息
【发布时间】:2011-06-07 06:12:29
【问题描述】:

我尝试记录 WCF 服务的所有请求的所有参数。为此,我使用了“IParameterInspector”,目前已实现并有效。

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'"

所以我有两个问题。 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'"

【问题讨论】:

    标签: c# wcf .net-3.5


    【解决方案1】:

    试试看System.ServiceModel.OperationContext

    我能够使用 IParameterInspector 获取当前用户 System.ServiceModel.OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.

    【讨论】:

      猜你喜欢
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      • 2018-11-13
      • 2011-05-06
      • 1970-01-01
      相关资源
      最近更新 更多