Asp.net 如何为我的场景强制进行soap头身份验证?
问题是:我需要连接到soapweb服务;由java代码生成;通过C#通过MS Visual Studio 2013使用ASP.Net客户端 尝试1,通常的方法: 我使用wsdl并通过分配凭据添加了一个web服务引用,如:Asp.net 如何为我的场景强制进行soap头身份验证?,asp.net,web-services,authentication,soap,wsdl,Asp.net,Web Services,Authentication,Soap,Wsdl,问题是:我需要连接到soapweb服务;由java代码生成;通过C#通过MS Visual Studio 2013使用ASP.Net客户端 尝试1,通常的方法: 我使用wsdl并通过分配凭据添加了一个web服务引用,如: Credentials.Username.Username = "test"; Credentials.Password.Password = "test"; 执行时,遇到以下异常: The login information is
Credentials.Username.Username = "test";
Credentials.Password.Password = "test";
执行时,遇到以下异常:
The login information is missing!
尝试2:
我搜索过类似的问题,如:
我选择使用wsdl工具生成代理类,然后添加
标题属性,但我从Microsoft中找到以下注释:
注意:如果Web服务定义了表示SoapHeader或SoapUnknownHeader类型的SOAP头的成员变量,而不是从SoapHeader派生的类,则代理类将不包含有关该SOAP头的任何信息
尝试3:
我已尝试在client web.config中更改服务模型:
<bindings>
<basicHttpBinding>
<binding name="CallingCardServicePortBinding">
<security mode="TransportWithMessageCredential" >
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
所以,现在我不知道该怎么办!
我无法控制web服务,我需要构建一个理解它的客户端
救命啊
Soap请求模板如下所示:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="...">
<soapenv:Header>
<credentials>
<userName>someUserName</userName>
<password>somePassword</password>
</credentials>
</soapenv:Header>
<soapenv:Body>
<ser:someRequest>
.......
.......
.......
</ser:someRequest>
someUserName
密码
.......
.......
.......
如果目标web服务使用身份验证,则仅ASMX不起作用,因为它不知道身份验证、加密等。您有2个选项:
someUserName
密码
不要使用wsdl.exe。它是旧ASMX技术堆栈的一部分。ASMX是一种遗留技术,不应用于新的开发。WCF或ASP.NET Web API应用于Web服务客户端和服务器的所有新开发。一个提示:微软已经在MSDN上退出了。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="...">
<soapenv:Header>
<credentials>
<userName>someUserName</userName>
<password>somePassword</password>
</credentials>
</soapenv:Header>
<soapenv:Body>
<ser:someRequest>
.......
.......
.......
</ser:someRequest>
<client>
<endpoint>
<headers>
<credentials>
<userName>someUserName</userName>
<password>somePassword</password>
</credentials>
</headers>
</endpoint>
</client>