當我們用windows form 的程式呼叫Web Service時,卻出現錯誤訊息『要求失敗,HTTP狀態401:Access Denied』
這Web Sevice在別台機器,是可以正確被呼叫的,我們呼叫Web Service的程式也簡單不過,如下所示:
Diag1.HelloWorld()
發生原因
我們到IIS管理員-預設的網站-內容-目錄安全-編輯
發現只有使用整合性 Windows 驗證(MSDN),匿名存取是取消的,那表示使用該Web Service需通過Widows 驗證,這個常發生在一些網管自行提升網站的安全性,把Web Server加入AD後,自行取消企名存取,卻未通知開發人員。或是開發人員的電腦設定不同。
解決方式
- 修改呼叫Web Service的程式,呼叫WS前加入以下程式碼,把目前的Windows 認證傳給IIS
Diag1.Credentials = System.Net.CredentialCache.DefaultCredentials
詳細參考MSDN - 就是把IIS 驗證方式的匿名存取 打勾
沒有留言:
張貼留言