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


轉自:http://www.cnblogs.com/geqinggao/p/3270499.html

 

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