演练:在 Visual Web Developer 中创建和使用 ASP.NET Web 服务

更新:2007 年 11 月

除了使您能够创建网页之外,Microsoft Visual Studio 还使您能够创建使用 ASP.NET XML 的 Web 服务。在 Visual Studio 中创建 Web 服务与创建网页相似。还可以使用 Microsoft Visual Web Developer Web 开发工具来引用和使用 Visual Web Developer 解决方案中、本地计算机上或本地或外部 UDDI 目录中的 Web 服务。在本演练中,将在一个解决方案中创建 Web 服务,而在另一个解决方案中使用该 Web 服务。

本演练涉及以下任务:

  • 在 Visual Web Developer 创建一个简单的 XML Web services。

  • 创建一个使用 Web 服务的独立网站。

先决条件

若要完成本演练,您需要:

  • 在本地计算机上安装的 Microsoft Internet 信息服务 (IIS)。

在 IIS 根下创建 Web 服务

按照下面的步骤创建一个新的 Web 服务和网页。

说明:

在本演练中必须使用 IIS 网站。

创建 Web 服务

  1. 打开 Visual Web Developer。

  2. 在“文件”菜单上单击“新建网站”。

    “新建网站”对话框随即出现。

  3. 在“Visual Studio 已安装的模板”之下单击“ASP.NET Web 服务”。

  4. 单击“浏览”。

  5. 单击“本地 IIS”。

  6. 单击“默认网站”。

  7. 单击“创建新 Web 应用程序”。

    Visual Web Developer 创建一个新的 IIS Web 应用程序。

  8. 键入名称 TemperatureWebService。

  9. 单击“打开”。

    出现“新建网站”对话框,新网站的名称位于最右边的“位置”列表中。该位置包括协议(“http://”)和位置(“localhost”)。这指示正在处理本地 IIS 网站。

  10. 在“语言”列表中,单击您想使用的编程语言。

    您选择的编程语言将为网站的默认语言。但是,通过用不同的编程语言创建页面和组件,可以在同一 Web 应用程序中使用多种语言。有关如何使用不同语言创建组件的更多信息,请参见 ASP.NET 网站中的共享代码文件夹

  11. 单击“确定”。

    Visual Web Developer 创建新的 Web 服务并打开一个名为 Service 的新类,该类为默认 Web 服务。但是,在下面的过程中将用指定的名称创建一个新的 Web 服务且不使用 Service 类。

  12. 关闭 Service 类。

创建 Web 服务

创建一个 Web 服务,它将温度从华氏温度转换为摄氏温度和从摄氏温度转换为华氏温度。

创建 Web 服务

  1. 在解决方案资源管理器中,右击网站的名称 (https://localhost/TemperatureWebService),然后单击“添加新项”。

  2. 在“Visual Studio 已安装的模板”之下单击“Web 服务”,然后在“名称”框中键入“Convert”。

  3. 确保“将代码放在单独的文件中”复选框已选定,然后单击“添加”。

    Visual Web Developer 创建一个新的 Web 服务,它由两个文件组成。可以调用 Convert.asmx 文件以调用 Web 服务方法,且该文件指向 Web 服务的代码。代码本身位于 App_Code 文件夹中的类文件(Convert.vb、Convert.cs 或 Convert.jsl,具体取决于编程语言)。代码文件包含 Web 服务的模板。代码文件包括 Web 服务方法的某些代码。

在 Web 服务中创建两种方法。第一种方法将华氏温度转换为摄氏温度,第二种方法将摄氏温度转换为华氏温度。

创建转换方法

  1. 在类内部的 HelloWorld 方法后面添加下面的代码:

        <System.Web.Services.WebMethod()> _
    Public Function FahrenheitToCelsius(ByVal Fahrenheit As Double) _
            As Double
            Return ((Fahrenheit - 32) * 5) / 9
        End Function
    
        <System.Web.Services.WebMethod()> _
            Public Function CelsiusToFahrenheit(ByVal Celsius As Double) _
                As Double
            Return ((Celsius * 9) / 5) + 32
        End Function
    
    [System.Web.Services.WebMethod()]
    public double FahrenheitToCelsius(double Fahrenheit)
    {
        return ((Fahrenheit - 32) * 5) / 9;
    }
    
    [System.Web.Services.WebMethod()]
    public double CelsiusToFahrenheit(double Celsius)
    {
        return ((Celsius * 9) / 5) + 32;
    }
    

    请注意,在函数名前放置一个属性([System.Web.Services.WebMethod()] 或 <System.Web.Services.WebMethod()>),作为函数声明的一部分。

  2. 输入函数之后,保存该文件。

现在,就可以测试 Visual Web Developer 中的 Web 服务。

测试 Web 服务

  1. 在解决方案资源管理器中,单击 Convert.asmx,然后按 Ctrl+F5。

    调用 Web 服务,在资源管理器中显示一个页,显示由 Web 服务公开的方法。

  2. 单击“CelsiusToFahrenheit”,它调用该方法。

    出现一页,提示您输入 CelsiusToFahrenheit 方法的参数值。

  3. 在“Celsius”框中,键入“100”,然后单击“调用”。

    出现一个新窗口,显示调用 CelsiusToFahrenheit 方法时 Web 服务返回的 XML。在 XML 中出现值“212”。

  4. 关闭包含方法结果的浏览器。

  5. 在原始浏览器中,单击“后退”以返回到方法列表。

  6. 单击“FahrenheitToCelsius”并测试以确保该方法正在返回预期的结果。

    如果键入“212”,则 FahrenheitToCelsius 方法将返回“100”。

  7. 关闭浏览器。

已完成创建 Web 服务;下一步是使用 Web 服务。

使用 Web 服务

既然有 Web 服务,那么就可以创建一个网站,在这个网站引用和使用创建的 Web 服务。在此演练中,创建一个单独的网站,在该网站的一个页面上启动刚才创建的 Web 服务。

创建一个网站以使用 Web 服务

  1. 在“文件”菜单上单击“新建网站”。

  2. 在“Visual Studio 已安装的模板”之下单击“ASP.NET 网站”。

  3. 单击“浏览”。

  4. 单击“本地 IIS”。

  5. 单击“默认网站”。

  6. 单击“创建新 Web 应用程序”。

    Visual Web Developer 创建一个新的 IIS Web 应用程序。

  7. 键入名称 TemperatureWeb。

  8. 单击“打开”。

  9. 在“语言”列表中,单击您想使用的编程语言。

  10. 单击“确定”。

    Visual Web Developer 创建一个新的本地 IIS 网站和一个名为 Default.aspx 的新页。

将 Web 服务作为组件添加

Web 服务是可以在应用程序中引用的组件。因此,必须创建对 Web 服务的引用。

创建对 Web 服务的引用

  1. 在“网站”菜单上单击“添加 Web 引用”。

    出现“添加 Web 引用”对话框,如下面的屏幕快照所示。

    “添加 Web 引用”对话框

    “添加 Web 引用”对话框

  2. 在“URL”列表中,为 Web 服务输入下面的 URL,然后单击“执行”:

    https://localhost/TemperatureWebService/Convert.asmx

    Visual Web Developer 找到 Web 服务后,在“添加 Web 引用”对话框中出现有关 Web 服务的信息。

    说明:

    如果不能添加对 Web 服务的引用,则可能是因为代理服务器未正确配置。在 Microsoft Internet Explorer 中,在“工具”菜单上单击“Internet 选项”,单击“连接”,然后单击“LAN 设置”。选择“跳过本地地址的代理服务器”复选框。另外,将代理服务器地址设置为代理服务器的确切名称,而不是允许 Internet Explorer 检测代理服务器。有关更多信息,请与网络管理员联系。

  3. 单击一个方法链接。

    出现该方法的测试页。

  4. 单击“添加引用”。

    Visual Web Developer 创建一个 App_WebReferences 文件夹,并在这个文件夹中为新的 Web 引用添加一个文件夹。默认情况下,给 Web 引用分配一个与其服务器名称对应的命名空间(在这种情况下为 localhost)。记下 Web 引用命名空间的名称。在文件夹中,Visual Web Developer 添加一个引用 Web 服务的 .wsdl 文件。它还添加支持文件,如发现(.disco 和 .discomap)文件,这些文件包括有关 Web 服务所在位置的信息。

    说明:

    如果 Web 服务的服务器名称包含不能用于类名的字符,如连字符 (-),则 Visual Web Developer 将这些字符转换为下划线字符 (_)。因此,Visual Web Developer 中 Web 服务的命名空间可能与服务器名称不完全匹配。

现在可以使用 Web 服务。在此演练中,将控件添加到 Default.aspx,然后对控件进行编程,将指定温度同时转换为华氏温度和摄氏温度。当该页运行时,它看起来类似于下面的插图:

温度转换页

VenusWebServicesWalkthroughConsumePage 屏幕快照

调用 Web 服务方法

  1. 打开 Default.aspx 页并切换到“设计”视图。

  2. 从工具箱的“标准”组中,将下面的控件拖到该页并按照指示设置其属性:

    控件

    属性

    Textbox

    ID:TemperatureTextbox

    文本:(空)

    Button

    ID:ConvertButton

    Text:Convert

    Label

    ID:FahrenheitLabel

    文本:(空)

    Label

    ID:CelsiusLabel

    文本:(空)

  3. 或者,将文本添加到该页作为标题。

    对于本演练,页的布局无关紧要。

  4. 双击 ConvertButton 为其 Click 事件创建事件处理程序。

  5. 确保事件处理程序代码与以下示例中的代码匹配:

    Dim wsConvert As New localhost.Convert()
    Dim temperature As Double
    temperature = System.Convert.ToDouble(TemperatureTextbox.Text)
    FahrenheitLabel.Text = "Fahrenheit To Celsius = " & _
        wsConvert.FahrenheitToCelsius(temperature).ToString()
    CelsiusLabel.Text = "Celsius To Fahrenheit = " & _
        wsConvert.CelsiusToFahrenheit(temperature).ToString()
    
    protected void ConvertButton_Click(object sender, EventArgs e)
    {
        localhost.Convert wsConvert = new localhost.Convert();
        double temperature =
            System.Convert.ToDouble(TemperatureTextbox.Text);
        FahrenheitLabel.Text = "Fahrenheit To Celsius = " +
            wsConvert.FahrenheitToCelsius(temperature).ToString();
        CelsiusLabel.Text = "Celsius To Fahrenheit = " +
            wsConvert.CelsiusToFahrenheit(temperature).ToString();
    }
    
  6. 按 Ctrl+F5 运行该页。

  7. 在文本框中键入一个值(如“100”),然后单击“转换”。

    该页显示将温度值转换为华氏温度和摄氏温度的结果。

调试 Web 服务

可以按调试网页的同样方式调试 Web 服务。

说明:

Visual Web Developer 速成版和 Visual Studio 标准版不支持从引用 Web 服务的页面单步执行。如果正在使用 Visual Web Developer 速成版或 Visual Studio 标准版,则跳过本节和后面几节。有关如何调试网站的更多信息,请参见 演练:在 Visual Web Developer 中调试网页

若要启动,则必须配置包含要启用调试的 Web 服务的网站。

在 Web 服务网站上启用调试

  1. 在“文件”菜单上单击“打开网站”。

  2. 单击“本地 IIS”。

  3. 单击“TemperatureWebService”,然后单击“打开”。

  4. 在“网站”菜单上单击“ASP.NET 配置”以打开网站管理工具。

    说明:

    如果这是第一次运行网站管理工具,则该工具出现之前可能会存在延迟。

  5. 单击“应用程序”,然后单击“应用程序配置”。

  6. 在“调试和跟踪”下单击“配置调试和跟踪”。

  7. 选择“启用调试”复选框。

    网站管理工具为网站创建 Web.config 文件,并将配置选项设置为启用调试。

    说明:

    若要在解决方案资源管理器中查看 Web.config 文件,请单击网站的名称,然后在解决方案资源管理器工具栏上单击“刷新”。

  8. 关闭网站管理工具。

现在必须对使用 Web 服务的网站启用调试。

在网站上启用调试

  1. 打开 TemperatureWeb 站点。

  2. 在“网站”菜单上单击“ASP.NET 配置”以打开网站管理工具。

  3. 单击“应用程序”,单击“应用程序配置”,在“调试和跟踪”下单击“配置调试和跟踪”,然后选择“启用调试”复选框。

  4. 关闭网站管理工具。

    说明:

    若要在解决方案资源管理器中查看 Web.config 文件,请选择网站的名称,然后在解决方案资源管理器工具栏上单击“刷新”。

  5. 在解决方案资源管理器中,右击 Default.aspx,然后单击“查看代码”。

    Visual Web Developer 打开该页的代码文件。

  6. 将指针定位在下面的行中:

    temperature = System.Convert.ToDouble(TemperatureTextbox.Text)
    
    double temperature =
        System.Convert.ToDouble(TemperatureTextbox.Text);
    
  7. 按 F9 在行上设置断点。

测试调试

网站和 Web 服务都配置为可进行调试,所以现在可以尝试调试。将在 Default.aspx 页启动,并且逐句通过代码,直到代码调用 Web 服务为止。调试器将切换到 Web 服务并继续逐句通过代码。

调试页面和 Web 服务

  1. 按 F5 运行 Default.aspx 页并进行调试。

    该页显示在浏览器中。

  2. 在框中键入一个值(如“100”),然后单击“转换”。

    Visual Web Developer 开始运行该页的代码,但是遇到有断点的行就停止并突出显示该行。

  3. 按 F11 移到下一行。

  4. 再次按 F11。

    因为下一行调用 Web 服务,所以调试器进入并单步执行 Web 服务,在 FahrenheitToCelsius 方法的第一行处停止。

  5. 继续按 F11。

    调试器逐句通过该方法的其余部分,然后返回到调用页。如果继续逐句通过,则调试器将逐语句返回到 Web 服务并进入和单步执行 CelsiusToFahrenheit 方法。

  6. 关闭浏览器,这也会关闭调试器。

后续步骤

本演练阐释了创建一个非常简单的 Web 服务和在 ASP.NET 应用程序中使用该服务的基本原则。您可能要尝试使用其他更复杂的 Web 服务功能。建议研究的方面如下:

请参见

任务

演练:在 Visual Web Developer 中调试网页

概念

使用 ASP.NET 创建的 XML Web services 的设计准则

保证使用 ASP.NET 创建的 XML Web services 的安全

参考

XML Web services 中的 @ WebService 指令

其他资源

<webServices> 元素

使用 ASP.NET 的 XML Web services