2011-11-11 73 views
0

我有一個Web服務我試圖與其進行接口,但無論我嘗試什麼,它都拒絕將客戶端證書與請求一起發送。WCF拒絕將ClientCredentials附加到請求

在我的app.config安全塊看起來像

<security mode="Transport"> 
    <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> 
    <message clientCredentialType="UserName" algorithmSuite="Default" /> 
</security> 

然後,我使用這樣的服務代理:

Dim MyUploadEvent As New EventUploadWSv1.EventUploadWSv1PortTypeClient("IEventUploadWSv1Port") 
Dim request As New EventUploadWSv1.webservice_source_event_FileUploadRequest 

' First Thing I tried 
MyUploadEvent.ClientCredentials.UserName.UserName = "..." 
MyUploadEvent.ClientCredentials.UserName.Password = "..." 

' Also Tried this based on a question here and a couple of blogs 
'Dim defaultCredentials As ClientCredentials 
'Dim loginCredentials As New ClientCredentials() 

'loginCredentials.UserName.UserName = "..." 
'loginCredentials.UserName.Password = "..." 

'defaultCredentials = MyUploadEvent.Endpoint.Behaviors.Find(Of ClientCredentials)() 
'MyUploadEvent.Endpoint.Behaviors.Remove(defaultCredentials) 
'MyUploadEvent.Endpoint.Behaviors.Insert(0, loginCredentials) 

' Configure Request Object 

' This throws an exception 
MyUploadEvent.fileUpload(request) 

我也利用一切其他ClientCredentials場嘗試(MyUploadEvent.ClientCredentials和MyUploadEvent.ClientFactory.ClientCredentials),但服務器不斷返回一條消息,告訴我沒有附加SOAP認證信息。我檢查了通過電話發送的消息,並且沒有提及任何地方的用戶名或密碼。我顯然在這裏錯過了一些我不該做的事情。

回答

0

您必須使用TransportWithMessageCredential安全模式。運輸僅使用Transport元素中定義的配置,Message元素完全被忽略。