訪問WebService出現IIS錯誤:The request failed with HTTP status 401: Unauthorized


 

本文轉載自 輕量級程序員

-------------------------------------------------

錯誤重現:

VS2005 Beta2中創建基於File SystemWeb SiteWeb Service,在Web Site中引用WebSevice,調用其中的默認的HelloWorld方法。

Dim ws As New localhost.Service()

Response.Write(ws.HelloWorld())

 

就會出現The request failed with HTTP status 401: Unauthorized錯誤頁面。

為什么呢?

 

原因就在於Web Service的位置是File System

采用File System的網站安全性比較高,端口是隨機的,只能在本機訪問,並且網站運行的身份是當前用戶的身份。因此當訪問Web Service的時候需要身份驗證。

 

WebSite的情況也是這樣,但是在默認情況訪問Web Service的時候使用的是匿名用戶。也就是說,雖然Web Site運行的身份是當前用戶,但是訪問Web Service是的時候是匿名用戶。所以出現401錯誤。

我們要做的就是讓Web Site在訪問Web Service的時候使用默認的身份。

在實例化Web Service代理類之后我們要加上這么一句話

 

Dim ws As New localhost.Service()

ws.UseDefaultCredentials = True

Response.Write(ws.HelloWorld())

這樣就可以了。

 

以上問題是在VS2005Beta2版本當中出現的。自VS2005的正式版中已經沒有。不需要增加ws.UseDefaultCredentials = True語句。但是單步調試的時候發現UseDefaultCredentials的屬性依然是False。看來正式版中只是調整了使用File System網站的運行機制。


免責聲明!

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



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