HTTP 請求未經客戶端身份驗證方案“Anonymous”授權。從服務器收到的身份驗證標頭為“Negotiate,NTLM”。


近來項目需要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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM