我正在使用WCF访问Web服务。使用WSHttpBinding,将安全模式设置为Transport(https),并且客户端凭证类型为Basic。当我尝试使用代理访问服务时,获取401未经授权的例外。使用WCF的Http请求中缺少授权标头
这里是绑定
var binding = new WSHttpBinding()
{
UseDefaultWebProxy = true,
Security =
{
Mode = SecurityMode.Transport,
Transport =
{
ClientCredentialType = HttpClientCredentialType.Basic,
},
}
};
这里是服务呼叫
var client = new InternetClient(binding, new EndpointAddress("httpsurl"));
client.ClientCredentials.UserName.UserName = "username";
client.ClientCredentials.UserName.Password = "password";
client.ProcessMessage("somevalue");
当看着使用HTTP分析 CONNECT报头
(Request-Line中)的HTTP头:CONNECT,某.com:443 HTTP/1.1
Host:somehost.com
代理连接:保持活动
POST HEADER
(请求线):POST /Company/1.0 HTTP/1.1
内容类型:应用/肥皂+ xml的;字符集= UTF-8
VsDebuggerCausalityData:uIDPo + voStemjalOv5LtRotFQ7UAAAAAUKLJpa755k6oRwto14BnuE2PDtYKxr9LhfqXFSOo8pEACQAA
主持人:somehost.com
的Content-Length:898
期望:100继续
连接:保持活动
如果你看到标题授权标头丢失
现在我的问题是为什么WCF调用缺少Authorization标头?我错过了什么吗? 。请询问您是否需要更多信息
什么?你确定这种行为吗?这对我来说似乎很荒谬。 – 2013-08-29 12:02:44
是的,绝对肯定 - 广泛测试它,并使用Fiddler研究行为 - 推荐的解决方案如上所述工作。我已经在生产中运行了。 – whale70 2013-09-06 19:13:29
是的,它也适用于我。但我仍然困惑。对于WCF开发人员创建身份验证机制,如果他们不是从盒子开始工作,我们必须自定义该行为?! – 2013-09-08 19:52:51