博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在ASP.NET WebService 中如何使用 WebMethod 属性
阅读量:5324 次
发布时间:2019-06-14

本文共 7476 字,大约阅读时间需要 24 分钟。

如何:使用 WebMethod 属性

 

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

WebMethod 属性 (Attribute) 提供以下属性 (Property):

BufferResponse

WebMethod 属性 (Attribute) 的 BufferResponse 属性 (Property) 启用对 XML Web services 方法响应的缓冲。当设置为 true(默认设置)时,ASP.NET 在将响应向下发送到客户端之前对整个响应进行缓冲。缓冲非常有效,它通过最小化辅助进程和 IIS 进程之间的通信来帮助提高性能。当设置为 false 时,ASP.NET 以 16KB 的块区缓冲响应。通常,只有在不想将响应的全部内容一次缓冲到内存时,才将该属性 (Property) 设置为 false。例如,您在反写一个集合,该集合正在以流的形式从数据库输出其项。除非另外指定,默认值为 true。有关更多信息,请参见 。

缓冲 XML Web services 方法的响应

  • 使用 WebMethod 属性 (Attribute) 的 BufferResponse 属性 (Property),如下所示:

    Visual Basic
    Public Class Service1    Inherits System.Web.Services.WebService    
    _ Public Function GetBigData() As DataSet 'implementation code End FunctionEnd Class

     

    C#
    public class Service1 : System.Web.Services.WebService{     [System.Web.Services.WebMethod(BufferResponse=false)]    public DataSet GetBigData()    {       //implementation code    }}

CacheDuration

WebMethod 属性 (Attribute) 的 CacheDuration 属性 (Property) 启用对 XML Web services 方法结果的缓存。ASP.NET 将缓存每个唯一参数集的结果。该属性 (Property) 的值指定 ASP.NET 应该对结果进行多少秒的缓存处理。值为零,则禁用对结果进行缓存。除非另外指定,默认值为零。有关更多信息,请参见 。

缓存 XML Web services 方法的结果

  • 使用 WebMethod 属性 (Attribute) 的 CacheDuration 属性 (Property),如下所示:

    Visual Basic
    Public Class Service1    Inherits System.Web.Services.WebService    
    _ Public Function ConvertTemperature(ByVal dFahrenheit As Double) _ As Double ConvertTemperature = ((dFahrenheit - 32) * 5) / 9 End FunctionEnd Class

     

    C#
    public class Service1 : System.Web.Services.WebService{     [System.Web.Services.WebMethod(CacheDuration=60)]    public double ConvertTemperature(double dFahrenheit)    {       return ((dFahrenheit - 32) * 5) / 9;    }}

说明

WebMethod 属性 (Attribute) 的 Description 属性 (Property) 提供 XML Web services 方法的说明,该说明将显示在服务帮助页上。除非另外指定,默认值为空字符串。有关更多信息,请参见 。

提供 XML Web services 方法的说明

  • 使用 WebMethod 属性 (Attribute) 的 Description 属性 (Property),如下所示:

    ' Visual BasicPublic Class Service1    Inherits System.Web.Services.WebService    
    _ Public Function ConvertTemperature(ByVal dFahrenheit As Double) _ As Double ConvertTemperature = ((dFahrenheit - 32) * 5) / 9 End FunctionEnd Class// C#public class Service1 : System.Web.Services.WebService{ [System.Web.Services.WebMethod( Description="Converts F to C a temperature in " + "degrees Fahrenheit to a temperature in degrees Celsius.")] public double ConvertTemperature(double dFahrenheit) { return ((dFahrenheit - 32) * 5) / 9; }}

EnableSession

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

在 XML Web services 方法中启用会话状态

  • 使用 WebMethod 属性 (Attribute) 的 EnableSession 属性 (Property),如下所示:

    Visual Basic
    Public Class Service1    Inherits System.Web.Services.WebService    
    _ Public Function ConvertTemperature(ByVal dFahrenheit As Double) _ As Double Session("Conversions") = Session("Conversions") + 1 ConvertTemperature = ((dFahrenheit - 32) * 5) / 9 End Function
    _ Public Function GetNumberOfConversions() As Integer GetNumberOfConversions = Session("Conversions") End FunctionEnd Class

     

    C#
    public class Service1 : System.Web.Services.WebService{     [System.Web.Services.WebMethod(EnableSession=true)]    public double ConvertTemperature(double dFahrenheit)    {       Session["Conversions"] = (int) Session["Conversions"] + 1;       return ((dFahrenheit - 32) * 5) / 9;    }    [System.Web.Services.WebMethod(EnableSession=true)]    public int GetNumberOfConversions()    {       return (int) Session["Conversions"];    }}

MessageName

WebMethod 属性 (Attribute) 的 MessageName 属性 (Property) 使 XML Web services 能够唯一确定使用别名的重载方法。除非另外指定,默认值是方法名称。当指定 MessageName 时,结果 SOAP 消息将反映该名称,而不是实际的方法名称。有关更多信息,请参见 。

为 XML Web services 方法提供消息名

  • 使用 WebMethod 属性 (Attribute) 的 MessageName 属性 (Property),如下所示:

    Visual Basic
    Public Class Service1    Inherits System.Web.Services.WebService    
    _ Public Function Add(ByVal dValueOne As Double, _ ByVal dValueTwo As Double) As Double Add = dValueOne + dValueTwo End Function
    _ Public Function Add(ByVal iValueOne As Integer, _ ByVal iValueTwo As Integer) As Integer Add = iValueOne + iValueTwo End FunctionEnd Class

     

    C#
    public class Service1 : System.Web.Services.WebService{     [System.Web.Services.WebMethod(MessageName="AddDoubles")]    public double Add(double dValueOne, double dValueTwo)    {       return dValueOne + dValueTwo;    }    [System.Web.Services.WebMethod(MessageName="AddIntegers")]    public int Add(int iValueOne, int iValueTwo)    {       return iValueOne + iValueTwo;    }}

    添加双精度型 (AddDoubles) 方法的 SOAP 请求消息将类似于以下代码:

    POST /myWebService/Service1.asmx HTTP/1.1Host: localhostContent-Type: text/xml; charset=utf-8Content-Length: lengthSOAPAction: "http://tempuri.org/AddDoubles"
    double
    double
    HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: length

    添加双精度型 (AddDoubles) 方法的 SOAP 响应消息将类似于以下代码:

    double

TransactionOption

WebMethod 属性 (Attribute) 的 TransactionOption 属性 (Property) 使 XML Web services 方法可以作为事务的根对象参与。虽然可以将 TransactionOption 属性 (Property) 设置为 TransactionOption 枚举的任意值,但 XML Web services 方法仅有两个可能的行为:它不参与事务(DisabledNotSupportedSupported)或它创建一个新事务(RequiredRequiresNew)。除非另外指定,默认值为 TransactionOption.Disabled。有关更多信息,请参见 。

除了任何 XML Web services 方法的必备条件外,您还需要添加一个对 System.EnterpriseServices.dll 的引用。该命名空间包含了公开在 COM+ Services 中找到的分布式事务模型的方法和属性 (Property)。System.EnterpriseServices.ContextUtil 类允许您使用 SetAbortSetComplete 方法选择事务。有关更多信息,请参见和。

使用 XML Web services 方法创建新事务

  1. 添加一个对 System.EnterpriseServices.dll 的引用。有关更多信息,请参见。

  2. System.EnterpriseServices 命名空间添加到 XML Web services,如下所示:

    Visual Basic
    Imports System.EnterpriseServices

     

    C#
    using System.EnterpriseServices;
  3. 使用 WebMethod 属性 (Attribute) 的 TransactionOption 属性 (Property),如下所示:

    Visual Basic
    Public Class Service1    Inherits System.Web.Services.WebService    
    _ Public Function DoSomethingTransactional() As String 'The transaction was successful... ContextUtil.SetComplete DoSomethingTransactional = ContextUtil.TransactionId.ToString() End FunctionEnd Class

     

    C#
    public class Service1 : System.Web.Services.WebService{     [System.Web.Services.WebMethod(       TransactionOption=TransactionOption.RequiresNew)]    public string DoSomethingTransactional()    {       // The transaction was successful...       ContextUtil.SetComplete();       return ContextUtil.TransactionId.ToString();    }}

转载于:https://www.cnblogs.com/domainblogs/archive/2009/02/07/1385880.html

你可能感兴趣的文章
mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!
查看>>
对闭包的理解
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
windows编程ASCII问题
查看>>
.net webService代理类
查看>>
Code Snippet
查看>>
Node.js Express项目搭建
查看>>
zoj 1232 Adventure of Super Mario
查看>>
Oracle 序列的应用
查看>>
1201 网页基础--JavaScript(DOM)
查看>>
组合数学 UVa 11538 Chess Queen
查看>>
oracle job
查看>>
Redis常用命令
查看>>
XML学习笔记(二)-- DTD格式规范
查看>>
IOS开发学习笔记026-UITableView的使用
查看>>
[转载]电脑小绝技
查看>>
windos系统定时执行批处理文件(bat文件)
查看>>
thinkphp如何实现伪静态
查看>>
BZOJ 2243: [SDOI2011]染色( 树链剖分 )
查看>>