2011-01-10 29 views
0

根據http://msdn.microsoft.com/en-us/library/ff823993%28v=VS.85%29.aspx,在此事件期間,Web過濾器可以請求匹配規則的GUID。我假設這是通過執行類型爲SELECTED_RULE_GUID的GetServerVariable完成的,因爲我找不到其他可以識別的方法。TMG SF_NOTIFY_POLICY_CHECK_COMPLETED事件

我的問題來自於我想查看規則是否允許或阻止請求的事實。如果它被阻止,那麼我的過濾器不必採取任何行動,但如果它被允許,我需要做一些工作。 SF_NOTIFY_POLICY_CHECK_COMPLETED似乎是最好的觀察事件,因爲它發生的最後一次已經處理了身份驗證和各種ms_auth流量,但恰好在請求從緩存中路由或獲取之前。

我曾經想過,也許我需要使用COM和IFPC接口(下面連同示例代碼一起向TMG註冊Web過濾器)來獲取有關規則的詳細信息。但是,通過FPC - > FPCArray - > FPCArrayPolicy - > FPCPolicyRules,唯一的元素返回函數會使用索引或名稱。

鑑於我只有一個GUID,這是有問題的。

FPCPolicyRule對象(單數)似乎沒有任何與GUID相關的字段,這消除了對它的迭代迭代。

所以我的問題歸結爲,從SF_NOTIFY_POLICY_CHECK_COMPLETED事件,網絡過濾器將如何確定請求已被允許或拒絕?

回答

0

經過更多調查和測試後,GUID可通過FPCPolicyRule對象的PersistentName訪問。由於FPCPolicyRules-> Item成員只能在Name或Index上工作,所以我必須循環遍歷其項目,比較每個PersistentName和GUID。

道歉,如果這是顯而易見的,帶我一個美好的一天,工作:) :)