如何执行输出缓存用 Visual C#.net 中的 Web 服务

文章翻译 文章翻译
文章编号: 318299 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

注意在这篇文章中引用下列.net 框架类库命名空间:
  • System.Web.Services
  • System.Text
本分步指南介绍了如何创建 ASP.NET Web 服务使用输出缓存的一个示例。输出缓存将缓存 Web 服务基于 工期 属性中为相应的 WebMethod 指定的输出响应的结果。

注意在 ASP.NET 2.0 中的测试页的 HTTP 方法已从 GET 开机自检。但是,开机自检不通常会缓存。如果您更改 GET 的测试页,在 ASP.NET 2.0 Web 服务应用程序中使用,正确缓存的工作原理。此外,HTTP 表示一个用户代理 (浏览器或调用应用程序) 应为可重写服务器缓存通过设置缓存控件标头为"无-高速缓存。因此,他们发现无-缓存标头时,ASP.NET 应用程序忽略缓存的结果。

要求

下面的列表概述了建议的硬件、 软件、 网络的基础结构和所需的服务包:
  • Microsoft Windows 2000 专业版、 Microsoft Windows 2000 Server、 Microsoft Windows 2000 高级服务器,或 Windows XP
  • microsoft.net 框架
  • Microsoft Internet Information Services (IIS)

创建一个新的 ASP.NET Web 服务应用程序

创建名为 WSCacheSample 新的 ASP.NET Web 服务应用程序,请执行以下操作:
  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 开发人员网络 (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 方法浏览器:
    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 框架类库文档:
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 框架使用编程相关的链接请访问下面的 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 标准版
关键字:?
kbmt kbcaching kbhowtomaster KB318299 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 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