要求と応答の両方をWCFRESTサービスに記録する方法を探しています。WCF RESTスターターキットには、要求をインターセプトするために使用できるRequestInterceptorクラスが付属していますが、応答に相当するものはないようです。理想的には、応答がネットワーク経由で送信される直前、たとえば、基になるサービスメソッドが戻ったときに応答をインターセプトできるようにしたいと思います。助言がありますか?
2989 次
2 に答える
2
パラメータではなく生のメッセージをインターセプトする場合は、Daniが提案するIParameterInspector拡張ポイントの代わりにIDispatchMessageInspectorの実装を挿入できることに注意してください。
于 2009-10-31T11:58:16.143 に答える
0
WCFには技術があります。属性IOperationBehaviorから派生するInstrumentedOperationAttributeを作成します。
内部で実装します:
public void ApplyDispatchBehavior(
OperationDescription operationDescription,
DispatchOperation dispatchOperation
)
{
dispatchOperation.ParameterInspectors.Add(
new ServerPI()
);
}
ServerPI()クラスは、魔法を実行するものです。beforecallメソッドとaftercallメソッドで必要なすべてを実行します。
class ServerPI : IParameterInspector
{
public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
{
Guid result = (Guid)correlationState;
// ...
}
public object BeforeCall(string operationName, object[] inputs)
{
string parameter1 = inputs[0] as string;
return Guid.NewGuid();
}
}
于 2009-10-31T08:29:49.803 に答える