如何在使用SOAP web服务时在C#中设置密码类型



我正试图在C#控制台应用程序中使用第三方SOAP web服务。我尝试了两种不同的方式来传递凭据,如下所示。

//Method 1 - passing security credentials
myCardService.Credentials = new System.Net.NetworkCredential("username", 
"password");
//Method 2 - passing security credentials
System.Net.CredentialCache myCredentials = new System.Net.CredentialCache();
NetworkCredential netCred = new NetworkCredential("username", "password");
myCredentials.Add(new Uri(myCardService.Url), "Basic", netCred);
myCardService.Credentials = myCredentials;

在这两种情况下,我都得到了一个例外:

System.Web.Services.Protocols.SoapHeaderException:SecurityHeader中出错:提供了无效的安全令牌

当我尝试使用SOAP UI来使用服务时,也出现了同样的错误。但是,当我在工具的Properties窗口中设置WSS Password Type=PasswordText时,它就工作了。我看不出有任何方法可以在C#代码中的凭据对象中进行此设置。非常感谢您的帮助。

我的理解是,在定义了与身份验证类型的服务绑定之后。

binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;

定义身份验证类型后,您将创建web服务客户端并执行以下操作:

client.ClientCredentials.Username.Username = networkCredential.Username;
client.ClientCredentials.Password.Password = networkCredential.Password;

这应该是通过这些证书的适当方式。

在从https://www.microsoft.com/en-us/download/details.aspx?id=14089并在reference.cs文件中将web引用从System.web.Services.Protocols.SoapHttpClientProtocol手动更改为Microsoft.web.Services.WebServicesClientProtocol。

相关内容

  • 没有找到相关文章

最新更新