我有一个WCF 4.0 REST服务应用程序,我想拦截传入的请求并检查自定义标头。在我的解决方案中,我使用以下默认端点
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" />
</webHttpEndpoint>
</standardEndpoints>
我尝试创建一个IDispatchMessageInspector和相应的BehaviorExtensionElement,并将相应的behaviorExtension和endPointBehavior添加到我的web.config中。我还需要做些什么才能使拦截器射击?
我假设我完全缺乏对WCF实际运作的了解在这里杀了我。我的IParameterInspector易于实现并且工作完美。我希望这很容易实现。
答案 0 :(得分:0)
跟进:
由于我的RequestInterceptor的目标主要集中在身份验证上,因此我能够使用从ServiceAuthorizationManager
派生的类来实现我想要的结果,并添加到web.config中,如下所示。
<behaviors>
<serviceBehaviors>
<behavior>
<!-- This behavior enables Auth Token Verification -->
<serviceAuthorization serviceAuthorizationManagerType="Something.Service.Authorization, Something.Service" />
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
答案 1 :(得分:0)
要使拦截器触发,您还需要实现自定义主机工厂,然后使用Microsoft.ServiceModel.Web.RequestInterceptor
public class MyCustomHostFactory : ServiceHostFactory
{
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
var serviceHost = new WebServiceHost2(serviceType, true, baseAddresses);
RequestInterceptor interceptor = MySolution.RequestInterceptorFactory.Create();
serviceHost.Interceptors.Add(interceptor);
return serviceHost;
}
}