对于我的休息服务上的特定端点,我需要检查一个令牌,而不是在每个端点中执行此操作:
IncomingWebRequestContext woc = WebOperationContext.Current.IncomingRequest;
string tok = woc.Headers["tok"];
// validate etc
我想在端点的方法上添加一个属性,并执行以下操作:
[Restricted]
public Blog Get(string id)
并使端点返回自定义响应,我可以获得标题和控制方法返回值吗?
答案 0 :(得分:3)
有两种方法可以做到这一点:
您可以使用postsharp等外部工具来实施aspect oriented programming。这意味着您的属性(现在使用标准.NET的普通元数据)成为一个Aspect并执行代码。这是通过编译IL代码的后编译器实现的。很酷的东西,但它需要花钱。
您将自己的IEndpointBehavior写入apply a dispatch behavior到服务端点,然后又会添加IDispatchMessageInspector来检查邮件(例如标题)并执行操作相应地,所有消息到您的端点。它还可以检查您的端点操作,是否具有此类属性集,并仅对拥有该操作的操作进行操作。