博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

.NET基础之web服务

Posted on 2009-05-27 10:21  shanymen  阅读(434)  评论(0编辑  收藏  举报

将 WebMethod 属性附加到 Public 方法表示希望将该方法公开为 XML Web services 的一部分。您还可以使用该属性 (Attribute) 的属性 (Property) 进一步配置 XML Web services 方法的行为。

属性 说明
BufferResponse 启用对 XML Web services 方法响应的缓冲。当设置为 true(默认设置)时,ASP.NET 在将响应向下发送到客户端之前对整个响应进行缓冲。缓冲非常有效,它通过最小化辅助进程和 IIS 进程之间的通信来帮助提高性能。当设置为 false 时,ASP.NET 以 16KB 的块区缓冲响应。通常,只有在不想将响应的全部内容一次缓冲到内存时,才将该属性 (Property) 设置为 false。

[WebMethod(BufferResponse=false)]

CacheDuration

启用对 XML Web services 方法结果的缓存。ASP.NET 将缓存每个唯一参数集的结果。该属性的值指定 ASP.NET 应该对结果进行多少秒的缓存处理。值为零,则禁用对结果进行缓存。除非另外指定,默认值为零。
[WebMethod(BufferResponse=false)]

Description

提供 XML Web services 方法的说明,该说明将显示在服务帮助页上。除非另外指定,默认值为空字符串。
[WebMethod(Description="HelloWorld!")]

EnableSession

启用 XML Web services 方法的会话状态。一旦启用,XML Web services 就可以从 HttpContext.Current.Session 中直接访问会话状态集合,或者,如果它是从 WebService 基类继承的,则可以使用 WebService.Session 属性来访问会话状态集合。除非另外指定,默认值为 false。
[WebMethod(EnableSession=true)]

MessageName

使 XML Web services 能够唯一确定使用别名的重载方法。除非另外指定,默认值是方法名称。当指定 MessageName 时,结果 SOAP 消息将反映该名称,而不是实际的方法名称。
[WebMethod(MessageName="AddDoubles")]

TransactionOption

使XML Web services方法可以作为事务的根对象参与。虽然可以将 TransactionOption 属性设置为 TransactionOption 枚举的任意值,但 XML Web services 方法仅有两个可能的行为:它不参与事务(Disabled、NotSupported、Supported)或它创建一个新事务(Required、RequiresNew)。除非另外指定,默认值为 TransactionOption.Disabled。
除了任何 XML Web services 方法的必备条件外,您还需要添加一个对 System.EnterpriseServices.dll 的引用。该命名空间包含了公开在 COM+ Services 中找到的分布式事务模型的方法和属性。System.EnterpriseServices.ContextUtil 类允许您使用 SetAbort 或 SetComplete 方法选择事务。
[WebMethod(TransactionOption=TransactionOption.RequiresNew)]

 

创建简单web servers事例
在项目中添加一个新项-web服务(WebService.cs)。cs代码中自动生成一个HelloWorld事例。测试运行时结果生成xml文件。

Code

使用web servers事例
对网站添加Web引用-此解决方案中的 Web 服务||本地计算机上的 Web 服务||浏览本地网络上的 UDDI 服务器。找到之前建立的web servers,修改web引用名(select)后添加引用。其他网站上的服务可以要求提供URL。会自动生成App_WebReferences文件夹,下面生成名为web引用名的文件夹。
在cs代码中对web服务的应用:
//select.WebService:select为添加引用时修改的web引用名,WebService为引用的web服务文件的名称。
//新建一个服务
select.WebService ws = new select.WebService();
//调用select方法
string message = ws.select("test");
Response.Write(message);