0

このサービスのすべての操作で同じ OperationBehavior が必要になることはわかっています。操作を実行する前に、同じ機能を実行する ServiceBehavior を実装できますか?

私は現在持っています:

[ServiceContract]
public interface IService
{
    [AuthTokenValidation]
    [OperationContract]
    string DoThis(string authtoken);
}

私はそれを置き換えたい:

[AuthTokenValidation]
[ServiceContract]
public interface IService
{
    [OperationContract]
    string DoThis(string authtoken);
}

AuthTokenValidation 属性内で、ApplyDispatchBehavior メソッドに次のコードがあります。

public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
{
    AuthTokenInspector inspector;

    inspector = new AuthTokenInspector(AuthTokenIndex);
    dispatchOperation.ParameterInspectors.Add(inspector);
}

IServiceBehavior の ApplyDispatchBehavior メソッドを確認しましたが、現在呼び出されている DisppatchOperation にアクセスする方法がわかりませんでした。

public void ApplyDispatchBehavior(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
{
    //Can I reach the OperationDispatch from in here??
}

これは ServiceBehavior を使用する適切な方法ですか、それとも OperationBehaviors に満足してこの機能を実装する必要がありますか?

4

1 に答える 1

2

私は試していませんが、次のように DispatchOperation にアクセスできると思いました。

  • serviceHostBase.ChannelDispatchers (ChannelDispatchers のコレクションを取得)

  • ChannelDispatcher.Endpoints (ChannelDispatcher のエンドポイントを取得)

  • Endpoint.DispatchRuntime.Operations (エンドポイントの操作を取得)

于 2010-11-09T19:05:27.857 に答える