如何執行輸出快取使用 Visual C#.NET 中的 Web 服務

文章翻譯 文章翻譯
文章編號: 318299 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

附註下列的.NET Framework 類別庫命名空間會參考本文中:
  • System.Web.Services
  • System.Text
本文將逐步告訴您,如何建立範例會使用輸出快取的 ASP.NET Web 服務。輸出快取會快取 持續期間 屬性指定給對應 WebMethod 為基礎的 Web 服務的輸出回應結果。

附註ASP.NET 2.0 中測試網頁的 HTTP 方法已經由 GET 變更 POST。不過,公佈的郵件是不快通常取。如果您變更 [測試] 頁面中 ASP.NET 2.0 Web 服務應用程式使用 GET,正確快取的運作方式。此外,HTTP 表示使用者代理程式 (瀏覽器或呼叫的應用程式) 應該能夠覆寫伺服器快取藉由設定快取控制標頭,以快取"無-區"。因此,ASP.NET 應用程式忽略快取的結果,當他們找到 「 無快取 」 標頭。

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構及所需的 Service Pack:
  • Microsoft Windows 2000 專業版,Microsoft Windows 2000 Server,Microsoft Windows 2000 進階伺服器或 Microsoft Windows XP
  • Microsoft.NET 架構
  • Microsoft 網際網路資訊服務 (IIS)

建立新的 ASP.NET Web 服務應用程式

建立新的 ASP.NET Web 服務應用程式,名為 WSCacheSample:
  1. 啟動 Visual Studio.NET。
  2. 在 [檔案] 功能表上指向 [新增],然後按一下 [專案] 以啟動新專案精靈]。
  3. 在 [專案類型,選取 Visual C#。在 [範本,] 下選取 [ASP.NET Web 服務]。
  4. 在 [位置] 方塊取代"WebService #"URL 路徑中名稱的您的專案 WSCacheSample。如果您使用本機伺服器,伺服器名稱保留為 http://localhost,如此 [位置] 方塊中看起來類似這樣:
    http://localhost/WSCacheSample

建立範例的 Web 服務

  1. 在 [方案總管] 中以滑鼠右鍵按一下專案節點,並指向 [新增,然後按一下 [加入 Web 服務
  2. 針對名稱輸入 CacheDemo.asmx,然後按一下 [開啟舊檔]。在 [設計] 檢視中開啟 Web 服務。
  3. 用滑鼠右鍵按一下 [Web] 服務,然後按一下 [檢視程式碼
  4. 將下列程式碼加入至 CacheDemo.asmx.cs 類別檔。 這將名為 60 秒的 CacheDurationGetCacheEntryTimeWebMethod 屬性。
    [WebMethod(CacheDuration=60)]
    public string GetCacheEntryTime(string Name)
    {
    	StringBuilder sb = new StringBuilder("Hi ");
    	sb.Append(Name);
    	sb.Append(", the Cache entry was made at ");
    	sb.Append(System.DateTime.Now.ToString());
    	
    	return(sb.ToString());
    }
    						
    附註: 依預設值,CacheDurationWebMethod 屬性設定為 0,這表示它不會快取。
  5. 因為範例程式碼會使用 StringBuilder 方法,包含 System.Text 命名空間的參考。在命名空間,列出的針對 Web 服務看起來類似這樣:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Web;
    using System.Web.Services;
    using System.Text;
    						
    注意: 如需有關 StringBuilder 類別的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站:
    StringBuilder 類別
    http://msdn2.microsoft.com/en-us/library/system.text.stringbuilder(vs.71).aspx
  6. 在 Visual Studio.NET IDE 中按一下 [在 [建置] 功能表上的 [建置方案]。
  7. 在 [檔案] 功能表上按一下 [全部儲存] 以儲存專案和相關的檔案。

測試專案

既然建立範例 CacheDemo Web 服務執行 GetCacheEntryTimeWebMethod 查看 CacheDuration 屬性設定的效果:
  1. 在 [方案總管] 中 CacheDemo.asmx,] 上按一下滑鼠右鍵,然後按一下 [在瀏覽器中的檢視

    會在瀏覽器中開啟.asmx 檔案,而且 GetCacheEntryTimeWebMethod 屬性列為頂端的頁面項目符號的項目。
  2. 按一下 GetCacheEntryTime 連結。
  3. 在方法的 [名稱] 方塊中鍵入 Joe,然後按一下 [叫用 執行 WebMethod 屬性,並傳回 XML 結果。請注意訊息中會傳回 「 時間戳記。

    注意: 如果 [WebServices 協助頁沒有出現,您可以執行 WebService 方法在 Web 上的 [位址] 方塊中輸入下列瀏覽器:
    http://localhost/wscachesample/cachedemo.asmx/GetCacheEntryTime?Name=Joe
    					
  4. 輸入 Joe 再次執行 WebMethod注意: 如果您在 60 秒 CacheDuration 屬性所指定的時間期間中執行 WebMethod 屬性,會出現相同的時間戳記。
  5. 重複步驟 4,但是在 WebMethod 屬性參數的 [名稱] 方塊中輸入 張瑾雯 代替 Joe。

    請注意時間戳記結果不同。這是因為預設輸出快取結果根據 WebMethod 屬性的參數。在這個範例 Joe 是參數值的前兩個測試並快取的輸出傳回的第二個測試。當您在第三個測試中使用 張瑾雯 時,您會收到新的結果。如果您重複於 60 秒內測試,您將會收到快取的輸出結果。輸出快取版本差異有關 WebMethod 屬性參數。

疑難排解

決定要實作您的 Web 服務的輸出快取功能時請記住資源會影響負面如果 WebMethod 屬性參數與要求相關聯的廣泛而異,或者回應牽涉到大量的資料,該伺服器。

?考

如需有關 WebMethodAttribute.CacheDuration 屬性和 WebMethodAttribute 類別的詳細資訊,請參閱下列主題在.NET Framework 類別庫文件:
WebMethodAttribute.CacheDuration 屬性
http://msdn2.microsoft.com/en-us/library/system.web.services.webmethodattribute.cacheduration(vs.71).aspx
如需有關 Web 服務的詳細資訊,請造訪下列 MSDN 網站:
使用 ASP.NET 建立的 XML Web 服務的設計方針
http://msdn2.microsoft.com/en-us/library/w8excbb0(vs.71).aspx

使用 WebMethod 屬性
http://msdn2.microsoft.com/en-us/library/byxd99hx(vs.71).aspx
其他範例如文件,以及與使用.NET] Framework 程式設計相關的連結請造訪下列 CodePlex 網站:
http://www.codeplex.com

屬性

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

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com