簡體   English   中英

使用企業庫驗證應用程序塊的WCF-如何獲取無效消息?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM