文章編號: 813834 - 上次校閱: 2007年3月14日 - 版次: 2.5

如何: 將目前的認證傳遞至 ASP.NET Web 服務

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
本文會參考下列的.NET Framework 類別庫命名空間:
System.Net

在此頁中

全部展開 | 全部摺疊

結論

本文將逐步告訴您,如何將使用者的目前認證傳遞至使用 ASP.NET 所建立的 XML Web 服務。

CredentialCache 類別的 DefaultCredentials 屬性包含目前的安全性內容的系統認證。用戶端應用程式的這些認證代表使用者名稱]、 [密碼] 和 [目前已登入之使用者的網域。用戶端憑證不會自動傳送。若要將用戶端的 Windows 安全性內容傳遞至 Web 服務,您必須將 Web 服務 Proxy 的 [認證] 屬性設定為 CredentialCache.DefaultCredentials


建立 Web 服務

  1. 啟動 Microsoft Visual Studio.NET。藉由使用 Visual C#.NET 或 Visual Basic.NET 中建立新的 ASP.NET Web 服務 專案。根據預設值,Service1.asmx,即建立。
  2. 專案 MyWebService 的名稱。
  3. 在 [方案總管] 中 Service1.asmx,] 上按一下滑鼠右鍵,然後按一下 [檢視程式碼
  4. Service1.asmx.cs 檔案 (或 Service1.asmx.vb 檔案如果您使用 Visual Basic.NET) 中移除註解上預設 WebMethod HelloWorld()
  5. 在 [建置] 功能表上按一下 建置方案
  6. 在您的瀏覽器來檢視 Service1 Web 服務描述中輸入下列 URL:
    http://localhost/MyWebService/Service1.asmx
  7. 若要測試 HelloWorld WebMethod,按一下 HelloWorld 連結。請注意 [WebMethod 可如預期般運作。

設定的 Web 服務的整合式的 Windows 驗證

  1. 按一下 [開始],指向 [設定],然後再按一下 [控制台]
  2. 在控制台中按兩下 [系統管理工具]。
  3. 連按兩下 網際網路資訊服務
  4. 展開 [網際網路資訊服務,然後再找出 MyWebService 虛擬目錄。
  5. MyWebService,] 上按一下滑鼠右鍵,然後按一下 [內容]。
  6. 按一下 [目錄安全性] 索引標籤。在 [匿名存取及驗證控制,按一下 [編輯]。
  7. 在 [驗證方法] 對話方塊按一下以選取 整合式 Windows 驗證] 核取方塊。

使用 Web 服務

  1. 藉由使用 Visual C#.NET 或 Visual Basic.NET 中建立新的 ASP.NET Web 應用程式。專案 WebServiceTest 的名稱。
  2. 在 [方案總管] 中以滑鼠右鍵按一下 [參考],然後按一下 [加入 Web 參考]。
  3. 在 [位址] 文字方塊中鍵入 WebServiceTest 下列 URL:
    http://localhost/MyWebService/Service1.asmx
  4. 按一下 [移至,然後按一下 [加入參考]。
  5. 在 [方案總管] 的 WebForm1.aspx 上, 按一下滑鼠右鍵,然後按一下 [檢視程式碼
  6. 在 [設計檢視的 WebForm1,按兩下 WebForm1 開啟 Page_Load 事件程式碼。變更 Page_Load 事件程式碼如下所示:

    Visual C#.NET 範例碼
    private void Page_Load(object sender, System.EventArgs e)
    {
    // Start an instance of the Web Service client-side proxy.
    localhost.Service1 myProxy = new localhost.Service1();
    Response.Write( myProxy.HelloWorld());	
    }
    Visual Basic.NET 範例程式碼
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    'Start an instance of the Web Service client-side proxy.
    Dim myProxy As localhost.Service1 = New localhost.Service1()
    Response.Write(myProxy.HelloWorld())
    End Sub
  7. 在 [建置] 功能表上按一下 建置方案
  8. 在瀏覽器來檢視 [Service1 輸入下列 URL Web 服務描述:
    http://localhost/WebServiceTest/WebForm1.aspx
  9. 您可能會收到 「 拒絕存取 」 錯誤訊息。這是因為您的認證不會傳送與 Web 服務要求進行驗證。

將目前的認證傳遞至 Web 服務

CredentialCache 類別屬於 System.Net 命名空間。
  1. 將下列的命名空間宣告加入檔案的頂端:

    Visual C#.NET 範例碼
    using System.Net;
    Visual Basic.NET 範例程式碼
    Imports System.Net
  2. DefaultCredentials 指派給 Web 服務用戶端 Proxy 的 [認證] 屬性。如果要執行這項操作,變更 Page_Load 事件的程式碼如下所示:

    Visual C#.NET 範例:
    private void Page_Load(object sender, System.EventArgs e)
    {
    // Start an instance of the Web service client-side proxy.
    localhost.Service1 myProxy = new localhost.Service1();
    myProxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
    Response.Write( myProxy.HelloWorld());	
    }
    Visual Basic.NET 範例程式碼
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    'Start an instance of the Web service client-side proxy.
    Dim myProxy As localhost.Service1 = New localhost.Service1()
    myProxy.Credentials = System.Net.CredentialCache.DefaultCredentials
    Response.Write(myProxy.HelloWorld())
    End Sub
    
  3. 在 [偵錯] 功能表上按一下 [開始]。嗨全球 出現在瀏覽器中。

?考

如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
811318? (http://support.microsoft.com/kb/811318/EN-US/ ) PRB: 「 拒絕存取 」 錯誤訊息時關閉匿名 」 驗證時,呼叫 Web 服務
如需詳細資訊請造訪下列 Microsoft 網站]:
http://msdn2.microsoft.com/en-us/library/aa302415.aspx (http://msdn2.microsoft.com/en-us/library/aa302415.aspx)

這篇文章中的資訊適用於:
  • Microsoft Web Services (included with the .NET Framework) 1.0
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 標準版
  • Microsoft Visual Basic .NET 2003 Standard Edition
關鍵字:?
kbmt kbwebservices kbwebforms kbsecurity kbauthentication kbhowtomaster KB813834 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:813834? (http://support.microsoft.com/kb/813834/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。