创建 Web 服务代理

客户端和 Web 服务可以通过 SOAP 消息进行通信,这些消息将输入参数和输出参数封装为 XML。代理类将参数映射到 XML 元素,然后通过网络发送 SOAP 消息。通过这种方法,代理类使您不必在 SOAP 级别与 Web 服务通信,并允许您在支持 SOAP 和 Web 服务代理的任何开发环境中调用 Web 服务方法。

可以通过两种方法,使用 Microsoft .NET Framework 将代理类添加到开发项目中:使用 .NET Framework 中的 WSDL 工具和在 Microsoft Visual Studio 中添加 Web 引用。下列各节更为详细地讨论这一主题。

使用 WSDL 工具添加代理

.NET Framework SDK 包括 Web 服务描述语言工具 (Wsdl.exe),它使得您能够生成 Web 服务代理以用于 .NET Framework 开发环境中。在支持 Web 服务的语言(当前为 C# 和 Microsoft Visual Basic)中创建客户端代理的最常用方法是使用 WSDL 工具。

使用 Wsdl.exe 将代理类添加到项目中

  1. 从命令提示符下,使用 Wsdl.exe 创建代理类,同时指定(至少)指向报表服务器 Web 服务的 URL。

    例如,下面的命令提示符语句为报表服务器 Web 服务的管理端点指定 URL。

    wsdl /language:CS /n:"Microsoft.SqlServer.ReportingServices2010" http://<Server Name>/reportserver/reportservice2010.asmx?wsdl
    

    WSDL 工具接受多种用于生成代理的命令提示符参数。前一示例指定语言 C# 和建议在代理中使用的一个命名空间(以防止在使用多个 Web 服务端点时出现名称冲突),并生成一个名为 ReportingService2010.cs 的 C# 文件。如果本示例已指定 Visual Basic,则该示例应已生成名为 ReportingService2010.vb 的代理文件。将在您运行此命令的目录中创建此文件。

  2. 将代理类编译为程序集文件(具有扩展名 .dll)并在项目中引用它,或者将该类添加为一个项目项。

    注意注意

    当您手动将代理类添加到项目时,您需要添加对于 System.Web.Services.dll 的引用。如果您在 Visual Studio .NET 中使用 Web 引用添加代理,则将自动为您创建引用。有关详细信息,请参阅本主题后面的“在 Visual Studio 中使用 Web 引用添加代理”。

    在将代理类作为项添加到项目后,关联的文件将出现在解决方案资源管理器中。

  3. 若要以编程方式调用此服务,应创建代理类的实例。

    以下代码示例显示在项目中创建 ReportingService2010 代理类的实例的语法:

Dim service As New ReportingService2010()
ReportingService2010 service = new ReportingService2010();

有关 Wsdl.exe 工具的详细信息(包括其完整语法),请参阅 .NET Framework SDK 文档中的“Web 服务描述语言工具”。有关 Web 服务代理的完整解释,请参阅 .NET Framework SDK 文档中的“创建 XML Web 服务代理”。

在 Visual Studio 中使用 Web 引用添加代理

Web 引用使得项目能够使用一个或多个 Web 服务。Visual Studio 使得用户能够通过以下几个简单步骤向项目添加 Web 服务引用。

将 Web 引用添加到项目

  1. 在**“解决方案资源管理器”**中,选择要使用 Web 服务的项目。

  2. 在**“项目”菜单中,单击“添加 Web 引用”**。

    **“添加 Web 引用”**对话框打开。

  3. 在**“URL”**字段中,输入指向报表服务器 Web 服务的完整路径。

    报表服务器 Web 服务的报表执行端点的简化 URL 可能如下所示:

    http://<Server Name>/reportserver/reportexecution2005.asmx
    

    此 URL 包含在其中部署报表服务器 Web 服务的域、包含该服务的文件夹的名称以及该服务的发现文件的名称。有关不同 URL 元素的完整说明,请参阅访问 SOAP API

    由 Web 服务提供的方法和属性的说明将出现在“浏览器”窗格的左侧。

    注意注意

    有关与报表服务器 Web 服务关联的项的详细信息,请参阅 报表服务器 Web 服务方法

  4. 验证项目是否可以使用报表服务器 Web 服务,以及您是否具有适当的权限访问报表服务器。

  5. 在**“Web 引用名”**字段中输入一个名称,您将在代码中使用该名称以编程方式访问报表服务器 Web 服务。

  6. 选择**“添加引用”**按钮,以在应用程序中创建对 Web 服务的引用。

    新引用将出现在**“解决方案资源管理器”中处于活动状态的项目的“Web 引用”节点下,其名称在“Web 引用名”**字段中指定。

  7. 在**“解决方案资源管理器”**中,展开“Web 引用”文件夹,以记下与可用于项目中的项的 Web 引用类对应的命名空间。

    在将 Web 引用添加到项目后,关联的文件将显示在**“解决方案资源管理器”**的“Web 引用”文件夹内的某个文件夹中。

在添加 Web 引用之后,使用以下语法创建代理类的实例:

Dim rs As New myNamespace.myReferenceName.ReportExecutionService()
rs.Url = "http://<Server Name>/reportserver/reportexecution2005.asmx?wsdl"
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
myNamespace.myReferenceName.ReportExecutionService rs = new myNamespace.myReferenceName.ReportExecutionService();
rs.Url = "http://<Server Name>/reportserver/reportexecution2005.asmx?wsdl"
rs.Credentials = System.Net.CredentialCache.DefaultCredentials

还可以将 using(在 Visual Basic 中为 Import)指令添加到报表服务器 Web 服务引用中。如果您使用此指令,则不需要完全限定命名空间中的类型。为此,请在文件中添加以下代码:

Import myNamespace.myReferenceName
using myNamespace.myReferenceName;