2012-05-04 137 views
1

我有一個配置了傳輸安全性和Basic clientCredentialType的Web服務客戶端。 該服務正在使用HTTPS端點,並且我很難診斷錯誤。我試圖向存儲請求和響應消息的應用程序以及傳遞的憑證(至少是用戶名)添加日誌。
對於我使用MessageInspector添加了自定義行爲的消息。
我該如何登錄憑證? WCF中是否有擴展點來執行此操作?任何其他建議?
感謝傳遞給WCF Web服務的日誌記錄憑證

編輯:我得到的錯誤是這樣的:

[NotSupportedException: This method is not supported by this class.] 
System.Net.BasicClient.Lookup(HttpWebRequest httpWebRequest, ICredentials credentials) +2544984 
System.Net.AuthenticationManager.Authenticate(String challenge, WebRequest request, ICredentials credentials) +304 
System.Net.AuthenticationState.AttemptAuthenticate(HttpWebRequest httpWebRequest, ICredentials authInfo) +7949046 
System.Net.HttpWebRequest.CheckResubmitForAuth() +269 
System.Net.HttpWebRequest.CheckResubmit(Exception& e) +126 
System.Net.HttpWebRequest.DoSubmitRequestProcessing(Exception& exception) +185 
System.Net.HttpWebRequest.ProcessResponse() +75 
System.Net.HttpWebRequest.SetResponse(CoreResponseData coreResponseData) +562 

[WebException: The request was aborted: The request was canceled.] 
System.Net.HttpWebRequest.GetResponse() +7865220 
System.ServiceModel.Channels.HttpChannelRequest.WaitForReply(TimeSpan timeout) +99 

[CommunicationException: An error (The request was aborted: The request was canceled.) occurred while transmitting data over the HTTP channel.] 
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +4729827 
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +1725 
...Application code from here on... 

這是正常工作的DEV但拋出QA這個錯誤的Web應用程序。代碼相同,用戶在兩種環境中均有效。

綁定配置爲:

<binding name="CommonBinding" maxReceivedMessageSize="10000000" useDefaultWebProxy="true" openTimeout="00:10:00" sendTimeout="00:10:00"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Basic" proxyCredentialType="Basic" 
      realm="" /> 
     <message clientCredentialType="UserName" algorithmSuite="Default" /> 
     </security> 
</binding> 
+0

你什麼錯誤?你使用什麼方法的用戶/傳遞認證? –

回答

0

檢查了這一點:

http://msdn.microsoft.com/en-us/magazine/cc948343.aspx

我相信你可以在IAuthorizationPolicy做到這一點

+0

據我所知,這是在服務器端。我想在客戶端執行此操作,因爲Web服務不是WCF,我對它們沒有太多的控制權。 –

+0

所以你想在客戶端登錄用戶身份?是x.509還是用戶通過?你可以把它從clientCredentials行爲中解脫出來。 –

+0

這是用戶/通行證。你有一個我如何使用clientCredentials行爲的例子嗎?我想捕獲有效的用戶並傳遞正在發送的消息,而不是已配置的消息(無論如何,它們都是在代碼中設置的) –