近來項目需要Web Service驗證授權,一般有兩種解決方案:
1.通過通過SOAP Header身份驗證。
2.通過集成windows身份驗證。
今天我就嘗試了已第二種方式進行授權,首先發布Web Service到IIS,然后選擇身份驗證,啟用Windows身份驗證,禁用匿名身份驗證
發布好了Web Servive就要在Client端調用了,我用的是VS2008,在client端項目引用中右鍵添加服務引用,輸入地址修改命名空間確定
接下來就要寫后台調用代碼了:
嘗試了多種授權,始終會報HTTP 請求未經客戶端身份驗證方案“Anonymous”授權。從服務器收到的身份驗證標頭為“Negotiate,NTLM”。的錯誤,很無解啊!
想到是不是因為.net 3.5通過添加服務引用(WCF引用)的方式和2.0 Web Service有兼容性問題呢?老老實實的以WS2005的方式添加Web Service再試:
因為發布Web Service的時候啟用了Windows身份驗證,所有在引用時會提示你舒服用戶名和密碼,輸完了下面的頁面才是真正的“添加Web引用”而不是“添加服務引用”
接下來后台代碼:
private void button1_Click(object sender, EventArgs e) { XmlNode x = null; WSPTIClient.PTIWS.PTIWebService s = new WSPTIClient.PTIWS.PTIWebService(); s.Credentials = new System.Net.NetworkCredential("Gerry", "password"); x = s.Transight_RetrieveOrder(1, DateTime.Now.Date, "-1"); MessageBox.Show(x.OuterXml); }
運行不報錯了,一切OK.我們再看看項目的引用多了一個“添加Web引用”
參考資料:http://developer.51cto.com/art/200908/141829.htm