我正在使用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