[英]WCF & Enterprise Library - Exception Shielding and Validation Application Block
[英]WCF using Enterprise Library Validation Application Block - how to get hold of invalid messages?
我有一些使用企業庫(4.0)驗證應用程序塊的WCF服務(在IIS 6中托管)。 如果客戶端提交的消息未通過驗證(即在ValidationFault
異常中被拋出),則我希望能夠將消息XML記錄在某處(使用代碼,沒有IIS日志)。 所有驗證均在啟動服務實現代碼之前進行。
我確定可以在服務實現之前設置一些類以使其運行(大概是驗證應用程序塊的工作方式),但是我不記得如何操作,或者無法確切地找到要搜索的內容。
是否可以創建一個類和相關的配置,使我可以訪問整個SOAP請求消息,或者至少可以訪問消息正文?
看一下使用策略注入應用程序塊...
我目前正在開發一個應用程序,其中我會攔截(使用PIAB)所有傳入服務器的請求,並根據請求的類型使用VAB應用不同的驗證行為。
這是有關將PIAB與WCF集成的文章:
http://msdn.microsoft.com/en-us/magazine/cc136759.aspx
您可以創建不同的感知機制,例如應用於公開操作的屬性。
您可以記錄整個WCF消息:
http://msdn.microsoft.com/en-us/library/ms730064.aspx
或者,您可以將其與Enterprise Library Logging Application Block結合使用。
我發現了一篇博客文章 ,它似乎可以滿足我的要求-創建一個實現IDispatchMessageInspector
的類。 在AfterReceiveRequest
方法中,您可以訪問整個傳入消息,因此可以注銷。 這是在身份驗證后發生的,因此您也可以訪問用戶名-方便進行日志記錄。 您可以創建支持類,使您可以通過屬性和/或配置將此行為分配給服務。
IDispatchMessageInspector
還為您提供了BeforeSendReply
方法,因此您可以記錄(或更改)響應消息。
現在,當客戶嘗試從字面上手工制作SOAP請求消息(甚至不使用某種DOM對象)到我們的服務時,我們就可以輕松獲得證明他們正在發送垃圾!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.