我只想使用用户和密码从c#客户端使用HTTPS-soap-webservice。 我不想使用app.config,所以我只是直接在代码中设置了几个属性。
当我尝试访问webservice-method时,我总是收到以下错误:
HTTP请求未经授权,客户端身份验证方案为“匿名”。从服务器收到的身份验证标题是“基本领域......
”
这是我的代码(我尝试了很多,但现在这是我的代码):
var b = new WSHttpBinding(SecurityMode.TransportWithMessageCredential);
b.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
....
var client = new MyClient(b, new Endpoint("https://myurl..."))
client.clientCredentials.UserName.UserName = "myuser";
client.clientCredentials.UserName.Password = "mypassword";
client.myMethodcall();
就像我上面写的那样,我已经找到了很多“解决方案”如何解决这个错误,但它们对我不起作用。我使用了basicHttpBinding,我使用了WSHttpBinding,我设置了绑定超时,我使用了SecurityMode.TransportWithMessageCredential等。似乎客户端根本没有设置authentication-header!
直接在代码中设置所有属性或使用app.config应该没有区别,对吗?有人可以帮帮我吗?
答案 0 :(得分:0)
我终于找到了错误。
我创建了一个接受app.config-settings的客户端,我创建了一个客户端,我直接在代码中设置了设置,发现app.config中的设置使用了
SecurityMode.Transport
默认情况下不是
SecurityMode.TransportWithMessageCredentials
所以我将我的代码更改为SecurityMode.Transport并且它可以正常工作。