如果我有一个 wcf 休息服务,例如http://somedomain.com/service.svc/uniqueid/somemethod/parameter1 那么有没有办法全局检查uniqueid是否对每个访问服务器的请求都有效。我可以检查每个操作合同,但我正在寻找一种不需要这样做的方法,以便每次访问服务时都会检查 uniqueid,如果无效则不会继续。
只是为了进一步了解我想要实现的目标...... WCF 服务是一个开放的 API。获取 uniqueid 也是开放的,不需要任何注册。我想使用 uniqueid,所以如果 API 被滥用,我可以轻松地获取 1 个 ID 的访问权限,而不会影响系统的任何其他用户。
更新:根据 Mike 的建议,我创建了一个 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);
}
}
}
}
有人现在我做错了吗?