共用方式為


HOW TO:設定用戶端應用程式服務

更新:2007 年 11 月

這個主題描述如何使用 Visual Studio [專案設計工具] 啟用與設定用戶端應用程式服務。您可以使用用戶端應用程式服務驗證使用者,以及從現有的 ASP.NET AJAX 應用程式服務擷取使用者角色與設定。您可以在設定後,使用如同用戶端應用程式服務概觀中所描述的方式,在應用程式程式碼中存取已啟用的服務。如需 ASP.NET AJAX 應用程式服務的詳細資訊,請參閱 ASP.NET 應用程式服務概觀

您可以在 [專案設計工具] 的 [服務] 頁面中啟用與設定用戶端應用程式服務。[服務] 頁面會更新專案之 App.config 檔中的值。若要存取 [專案設計工具],請使用 [專案] 功能表上的 [屬性] 命令。如需 [服務] 頁的詳細資訊,請參閱專案設計工具、服務頁。如需 [專案設計工具] 的詳細資訊,請參閱專案設計工具簡介

下列程序描述如何執行用戶端應用程式服務的基本組態。在稍後的章節中會描述進階組態選項。

設定用戶端應用程式服務

  1. 在 [方案總管] 中選取專案節點,然後在 [專案] 功能表上按一下 [屬性]。

    [專案設計工具] 隨即出現。

  2. 按一下 [服務] 索引標籤。就會如下圖所示出現 [服務] 頁面。

    專案設計工具中的服務索引標籤

  3. 在 [服務] 頁面上,選取 [啟用用戶端應用程式服務]。

  4. 如果您要提供專屬登入控制項或對話方塊,請選取 [使用表單驗證],或選取 [使用 Windows 驗證] 使用作業系統提供的識別。如需詳細資訊,請參閱用戶端應用程式服務概觀

    注意事項:

    如果您選取 [使用 Windows 驗證],用戶端應用程式服務將會自動設定為使用 SQL Server Compact Edition version 3.5資料庫。這會在 [服務的進階設定] 對話方塊中表示,如下一個章節中所述。如果您接著選取 [使用表單驗證],[使用自訂連接字串] 設定將不會自動清除。如果已產生 SQL Server Compact 3.5 資料庫以搭配 Windows 驗證使用,這就會導致錯誤發生。若要修正這些錯誤,請清除 [服務的進階設定] 對話方塊中 [使用自訂連接字串] 設定。

  5. 如果您選取 [使用表單驗證],請在 [驗證服務位置] 方塊中指定服務主機的 URL (不包含檔案名稱)。設計工具會在將值寫入組態檔時,自動附加標準檔案名稱 (Authentication_JSON_AppService.axd)。

  6. 或者,如果您選取 [使用表單驗證],您也可以在 [認證提供者] 方塊中指定值。認證提供者必須實作 IClientFormsAuthenticationCredentialsProvider 介面。您可以藉由使用認證提供者,將登入使用者介面與其他應用程式程式碼予以區隔。這可以讓您建立單一登入對話方塊,以供在多個應用程式中使用。如需詳細資訊,請參閱 HOW TO:使用用戶端應用程式服務實作使用者登入和登出

    如果您指定認證提供者,就必須將其指定為組件限定的類型名稱。如需詳細資訊,請參閱 Type.AssemblyQualifiedName組件名稱。最單純的組件限定類型名稱格式看起來會類似下列範例:

    MyNamespace.MyLoginClass, MyAssembly
    
  7. 在 [角色服務位置] 和 [Web 設定服務位置] 文字方塊中,請指定每個服務的服務位置 (不包含檔案名稱)。設計工具會在將值寫入組態檔時,自動附加標準檔案名稱 (Role_JSON_AppService.axd 和 Profile_JSON_AppService.axd)。

  8. 或者,按一下 [進階] 修改進階設定,例如本機快取行為。如需詳細資訊,請參閱下一個程序。

進階組態

下列程序描述如何設定較不常見案例的用戶端應用程式服務。例如,您可以在部署至公用位置的應用程式中使用這些組態選項,或是使用加密的 SQL Server Compact Edition version 3.5資料庫當做本機資料快取。

設定用戶端應用程式服務的進階設定

  1. 在 [專案設計工具] 的 [服務] 頁面上,按一下 [進階]。

    就會如下圖所示出現 [服務的進階設定] 對話方塊。如需這個對話方塊的詳細資訊,請參閱服務對話方塊的進階設定

    服務對話方塊的進階設定

  2. 選取或清除 [在本機儲存密碼雜湊以啟用離線登入]。當您選取這個選項時,就會在本機以加密格式快取使用者的密碼。如果您實作了應用程式的離線模式,這將會很有幫助。當選取這個選項時,您甚至可以在 IsOffline 屬性設定為 true 時驗證使用者。如需離線模式的詳細資訊,請參閱 HOW TO:使用用戶端應用程式服務離線工作

  3. 選取或清除 [要求使用者在伺服器 Cookie 過期時必須再次登入]。驗證 Cookie 會在遠端服務上設定,表示使用者登入保持使用中的時間長度。如需如何設定 Cookie 的詳細資訊,請參閱驗證的 forms 項目 (ASP.NET 設定結構描述) 中的 timeout 屬性。

    如果您選取這個選項,如果在驗證 Cookie 過期後嘗試存取遠端角色或 Web 設定服務,將會擲回 WebException。您可以處理這個例外狀況,然後顯示登入對話方塊以重新驗證使用者。如需這個行為的範例,請參閱逐步解說:使用用戶端應用程式服務。這個選項對部署在公用位置的應用程式來說很有用,可以確定使用者在使用後如果讓應用程式繼續執行,將不會無限期地維持通過驗證的狀態。

    如果您清除這個選項,然後在驗證 Cookie 過期後嘗試存取遠端服務,將會自動重新驗證使用者。

  4. 指定 [角色服務快取逾時] 的值。當角色經常更新時,請將這個時間間隔設定為較小的值。而當角色不常更新時,則請設定為較大的值。如果您實作了離線模式,請將時間間隔設定為較大的值,以避免角色資訊在應用程式離線時過期。

    當您呼叫 IsInRole 方法時,角色提供者會存取已快取的角色值或角色服務。若要以程式設計方式重設快取並強制此方法存取遠端服務,請呼叫 ResetCache 方法。

  5. 選取或清除 [使用自訂連接字串]。如需詳細資訊,請參閱下一個程序。

設定用戶端應用程式服務使用本機快取的資料庫

  1. 在 [專案設計工具] 的 [服務] 頁面上,按一下 [進階]。

    [服務的進階設定] 對話方塊隨即出現。

  2. 選取 [使用自訂連接字串]。

    Data Source = |SQL/CE| 的預設值會出現在文字方塊中。

  3. 若要產生與使用 SQL Server Compact Edition version 3.5資料庫,請保留預設連接字串值。Visual Studio 將會產生資料庫檔,並將它放在 Application.UserAppDataPath 屬性所指定的目錄中。

  4. 若要產生與使用加密的 SQL Server Compact 3.5 資料庫,請將 password 和 encrypt database 值加入連接字串中,如下列範例所示。

    注意事項:

    請務必指定強式密碼。在產生資料庫後就無法變更密碼。

    Data Source = |SQL/CE|;password=<password>;encrypt database=true
    
  5. 若要使用您專屬的 SQL Server 資料庫,請指定專屬連接字串。如需有效連接字串格式的詳細資訊,請參閱 SQL Server 文件。這個資料庫不是自動產生的。連接字串必須參考現有資料庫,您可以使用下列 SQL 陳述式建立這個資料庫。

    CREATE TABLE ApplicationProperties (PropertyName nvarchar(256),
        PropertyValue nvarchar(256))
    CREATE TABLE UserProperties (PropertyName nvarchar(256),
        PropertyValue nvarchar(256))
    CREATE TABLE Roles (UserName nvarchar(256), 
        RoleName nvarchar(256))
    CREATE TABLE Settings (PropertyName nvarchar(256), 
        PropertyStoredAs nvarchar(1), PropertyValue nvarchar(2048))
    

使用自訂提供者

根據預設,用戶端應用程式服務功能會使用 System.Web.ClientServices.Providers 命名空間中的提供者。當您使用 [專案設計工具] 的 [服務] 頁面設定應用程式時,這些提供者的參考就會加入至您的 App.config 檔中。這些預設提供者會存取伺服器上對應的提供者。Web 服務通常會設定為透過如 SqlMembershipProviderSqlRoleProvider 之類的提供者存取使用者資料。

如果您想要使用自訂服務提供者,通常會在伺服器端變更提供者,以便影響存取該伺服器的所有用戶端應用程式。但是,您也可以選擇在用戶端使用非預設的提供者。您可以在專案的 App.config 檔中指定自訂驗證或角色提供者,如下列程序所示。如需如何建立自訂驗證與角色提供者的資訊,請參閱實作成員資格提供者實作角色提供者。您也可以修改專案的 Settings 類別 (在 C# 中是當做 Properties.Settings.Default 存取,而在 Visual Basic 中是當做 My.Settings 存取),使用自訂設定提供者。如需詳細資訊,請參閱應用程式設定架構

設定用戶端應用程式服務使用非預設的提供者

  1. 若要使用非預設的驗證或角色服務提供者,首先要使用 [服務] 頁面完成所有其他組態設定。

  2. 關閉 [專案設計工具]。因為 [服務] 頁面將自動更新 App.config 檔 (即使您並未修改任何設定),所以這是必要的。如果您依照這個程序中所描述的方式手動修改 App.config 檔,然後返回 [服務] 頁面,則您的修改將會被重設。

  3. 在 [方案總管],按兩下 App.config。

    應用程式組態檔會在文字編輯器中開啟。

  4. 在 <membership> 或 <roleManager> 項目中尋找 <providers> 項目。這些項目是 <system.web> 項目的子系。<membership> 項目是用來指定驗證提供者,而 <roleManager> 項目是用來指定角色提供者。

  5. 加入 <add> 項目,做為 <providers> 項目的子系。您必須指定 name 和 type 屬性,如下列範例所示。type 屬性值必須是組件限定的類型名稱。如需詳細資訊,請參閱 Type.AssemblyQualifiedName組件名稱

    <add name="MyCustomRoleProvider" type="MyNamespace.MyRoleProvider, MyAssembly" />
    
  6. 修改 <membership> 或 <roleManager> 項目的 defaultProvider 屬性,指定在先前步驟中所加入之 <add> 項目的名稱值。

    <roleManager enabled="true" defaultProvider="MyCustomRoleProvider">
    

請參閱

工作

HOW TO:使用用戶端應用程式服務實作使用者登入和登出

HOW TO:使用用戶端應用程式服務離線工作

逐步解說:使用用戶端應用程式服務

概念

用戶端應用程式服務概觀

專案設計工具簡介

實作成員資格提供者

實作角色提供者

應用程式設定架構

參考

專案設計工具、服務頁

服務對話方塊的進階設定

其他資源

用戶端應用程式服務

建立及設定 SQL Server 的應用程式服務資料庫