http://somedomain.com/service.svc/uniqueid/somemethod/parameter1などの wcf rest サービス がある場合、サーバーにヒットするすべてのリクエストに対して uniqueid が有効かどうかをグローバルにチェックする方法があります。すべての操作コントラクトをチェックすることはできますが、サービスにアクセスするたびにuniqueidがチェックされ、無効な場合は続行されないようにする方法を探しています。
私が達成しようとしていることについて、さらに背景を説明します... WCF サービスはオープン API です。uniqueid の取得もオープンであり、サインアップは必要ありません。uniqueid を使用したいので、API が乱用された場合、システムの他のユーザーに影響を与えることなく、1 つの ID のアクセスを簡単に取得できます。
更新:マイクの提案に基づいて、IParameterInspector を作成しました
[AttributeUsage(AttributeTargets.Class)]
class IDParameterInspector : Attribute, IParameterInspector
そして、それを私のサービスクラスに添付しました
[IDParameterInspector]
public class MetaData : IMetaData
私が今抱えている問題は、ApplyDispatchBehavior が実行されないことです。
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
foreach (ChannelDispatcher channelDispatcher in serviceHostBase.ChannelDispatchers)
{
if (channelDispatcher == null)
{
continue;
}
foreach (var endPoint in channelDispatcher.Endpoints)
{
if (endPoint == null)
{
continue;
}
foreach (var operation in endPoint.DispatchRuntime.Operations)
{
operation.ParameterInspectors.Add(this);
}
}
}
}
誰かが今私が間違っていることをしていますか?