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

时间:2014-07-21 17:59:53

标签: c# web-services soap

我只想使用用户和密码从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应该没有区别,对吗?有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我终于找到了错误。

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

SecurityMode.Transport

默认情况下不是

SecurityMode.TransportWithMessageCredentials

所以我将我的代码更改为SecurityMode.Transport并且它可以正常工作。