我有一个我正在尝试与之交互的Web服务,但无论我尝试什么,都拒绝发送客户凭证和请求。
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 :(得分:0)
您必须使用TransportWithMessageCredential
安全模式。传输只使用Transport
元素中定义的配置,而Message
元素完全被忽略..