2011-08-20 24 views
0

我實現了IDispatchMessageInspector接口來記錄原始請求/響應消息。我通過IEndpointBehavior接口應用它。它適用於大多數情況。但是我發現當身份驗證失敗時,消息不會再被記錄(我在basicHttpBinding中使用TransportWithMessageCredential)。所以我開始調試WCF服務,並發現檢查器不會被調用。這種情況發生了什麼?如果安全認證失敗,IDispatchMessageInspector不會被觸發?

謝謝先進。

+0

最可能的原因是在您的檢查員之前涉及安全。 –

回答

0

認證發生在處理任何請求之前,一旦認證失敗,服務將不處理任何請求,當然,IDispatchMessageInspector將不會被調用。

當身份驗證發生時,客戶端將不會向服務發送任何請求。如果你想記錄原始消息,你可以在綁定中插入一個自定義的BindingElement。

+0

因此,如果我想記錄原始消息或更改響應,例如添加我自己的頭文件,在這種情況下我該怎麼辦?是否有像IDispatchMessageInspector其他方法注入通道堆棧?謝謝。 –

+0

您可以使用此接口將您的自定義標題添加到響應中,但它需要通過身份驗證。考慮一下:如果認證失敗,則表示該消息無效,爲什麼需要更改無效消息?本文詳細解釋了WCF的擴展點:http://msdn.microsoft.com/en-us/magazine/cc163302.aspx。 – Jack