一直都是用web掉用wcf服務的,前幾天公司要做一個自動測試的工具,需要在測試環境用winform調用測試的wcf服務,於是像web項目一樣,照常引用了wcf服務引用和公用dll。
開發自己測試 都沒有問題。於是WCF提交測試環境,於是問題來了 ,相同的winform項目調用本機的WCF服務無任何問題,但是調用測試服務器的WCF卻提示如下異常:
“未處理 System.ServiceModel.Security.SecurityNegotiationException
Message="服務器已拒絕客戶端憑據。”
好吧,原本以爲是binding下的<security mode="Transport">節點配置的問題,可是改成mode="None“還是報相同的錯誤。
最終解決方案:
在 using (TestServiceClient client = new TestServiceClient())
{
//最後在這個位置加了這三行代碼定義憑證數據 解決問題
client.ClientCredentials.Windows.ClientCredential.UserName = "administrator";//用戶名
client.ClientCredentials.Windows.ClientCredential.Password = "admin";//密碼
client.ClientCredentials.Windows.ClientCredential.Domain = ”192.168.1.100";//"(服務器地址)
response = client.Do(request);
}