HTTP请求未经授权…"匿名"

本文关键字:quot 匿名 授权 请求 HTTP | 更新日期: 2023-09-27 18:14:01

我只想用用户和密码从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等等。似乎客户端根本没有设置认证头!

直接在代码中设置所有属性或使用app.config应该没有区别,对吧?有人能帮我一下吗?

HTTP请求未经授权…"匿名"

我终于找到错误了。

我创建了一个客户端,它采用app.config-settings,我创建了一个客户端,我直接在代码中设置设置,发现来自app.config的客户端使用

SecurityMode.Transport
默认为

而不是

SecurityMode.TransportWithMessageCredentials

所以我把我的代码改为安全模式。