根据http://msdn.microsoft.com/en-us/library/ff823993%28v=VS.85%29.aspx,在此事件期间,Web过滤器可以请求匹配规则的GUID。我假设通过执行类型为SELECTED_RULE_GUID的GetServerVariable来完成,因为我找不到其他可以识别的方法。
我的问题来自于我想查看规则是允许还是阻止请求。如果它被阻止,那么我的过滤器不必采取任何行动,但如果它被允许我需要做一些工作。 SF_NOTIFY_POLICY_CHECK_COMPLETED似乎是最值得关注的事件,因为它发生的时间足以使得身份验证和各种ms_auth流量得到处理,但就在请求被路由或从缓存中获取之前。
我原本以为我可能需要使用COM和IFPC接口(以及用于向WebG注册Web过滤器的示例代码)以获取有关规则的详细信息。但是,通过FPC下降 - > FPCArray - > FPCArrayPolicy - > FPCPolicyRules,唯一的元素返回函数采用索引或名称。
鉴于我只有一个GUID,这是有问题的。
FPCPolicyRule对象(单数)似乎没有任何与GUID相关的字段,这消除了只是迭代它的集合。
所以我的问题归结为,从SF_NOTIFY_POLICY_CHECK_COMPLETED事件,Web过滤器如何确定请求是被允许还是被拒绝?
答案 0 :(得分:0)
经过更多调查和测试后,可以通过FPCPolicyRule对象的PersistentName访问GUID。由于FPCPolicyRules-> Item成员仅适用于Name或Index,因此我必须遍历其项目,将每个PersistentName与GUID进行比较。
道歉,如果这是显而易见的,请带我度过美好的一天:)