更新:2007 年 11 月
下面的演练描述了使用 Visual Basic 或 Visual C# 创建一个将华氏温度转换为摄氏温度的 Web 服务的过程。
在本演练中,将完成以下操作:
-
使用“ASP.NET Web 服务”项目模板创建 Web 服务。
-
实现 Web 服务。
-
在调试模式下运行 Web 服务。
-
部署 Web 服务。
若要完成本演练,需要访问满足创建 Web 项目的要求的计算机。有关更多信息,请参见演练:在 Visual Web Developer 中创建和使用 ASP.NET Web 服务。
创建 Web 服务项目
Visual Studio 提供了一个 ASP.NET Web 服务项目模板,帮助您在 Visual Basic 和 Visual C# 中创建 Web 服务。
创建 ASP.NET Web 服务项目
-
在“文件”菜单上,选择“新建网站”。
-
在“新建网站”对话框中,选择“ASP.NET Web 服务”图标。
-
输入要在其中开发 Web 服务的 Web 服务器地址,并将 TempConvert1 指定为目录名,如“http://MyServer/TempConvert1”。默认情况下,项目使用本地计算机“http://localhost”。
说明:
对于某些项目类型,“名称”文本框不可用,因为在指定位置时就设置了项目名。例如,Web 应用程序和 Web 服务位于 Web 服务器上,并从该服务器上指定的虚拟目录导出它们的名称。
说明:
在开发服务器上开发 Web 服务。默认情况下,开发服务器是本地计算机。通常在开发服务器上开发并生成项目,然后使用部署项目将它部署到承载 Web 服务的另一个服务器(部署服务器)上。但是,如果直接在将承载 Web 服务的服务器上进行开发,则开发服务器与部署服务器相同。
-
单击“确定”创建项目。
Visual Studio 自动创建必要的文件并包括支持 Web 服务所需的引用。在 Visual Studio 中创建 Web 服务项目时,可以看到 Service1.asmx 的组件设计器。
实现 Web 服务
下一步是编写代码以实现客户端将访问的 Web 服务的功能。对于在 Visual Studio 中创建的 Web 服务,这些代码包含在一个隐藏的代码隐藏文件中,该文件与由 Visual Studio 创建的 Web 服务的 .asmx 文件相关联。有关更多信息,请参见如何:创建 Web 服务方法。
添加 Web 服务方法
-
在 Service.vb 代码文件中定位 Service 类声明的代码。在类声明的前面,将 System.Web.Services.WebService 属性代码替换为以下代码(以粗体部分显示):
Visual Basic
复制代码
_ Public Class Service
C#
复制代码
[System.Web.Services.WebService( Namespace="http://Walkthrough/XmlWebServices/", Description="A temperature conversion service.")] public class Service : System.Web.Services.WebService
将 WebService 属性附加到 Public 类将使得可以包括有关 Web 服务的其他信息,如 Web 服务的命名空间以及 Web 服务的说明。该属性的说明属性包含在服务帮助页中。有关更多信息,请参见如何:使用 WebService 属性。
-
在 Service 类中,添加以下代码以声明 ConvertTemperature 函数:
Visual Basic
复制代码
_ Public Function ConvertTemperature(ByVal dFahrenheit As Double) _ As Double Return ((dFahrenheit - 32) * 5) / 9 End Function
C#
复制代码
[WebMethod(Description="This method converts a temperature in " + "degrees Fahrenheit to a temperature in degrees Celsius.")] public double ConvertTemperature(double dFahrenheit) { return ((dFahrenheit - 32) * 5) / 9; }
将 WebMethod 属性附加到 Public 方法将使该方法作为 Web 服务的一部分公开。该属性的说明属性包含在服务帮助页和服务方法帮助页中。有关更多信息,请参见如何:使用 WebMethod 属性。
-
在“解决方案资源管理器”中右击 Service.asmx,再在快捷菜单上单击“设为起始页”。
-
保存解决方案。
调试 Web 服务
Visual Studio 提供多种从 IDE 中生成并运行 Web 服务的方法,如:
-
开始执行(带调试)
-
开始执行(不调试)
-
在浏览器中查看
作为 Visual Studio 项目,此 Web 服务的发行版本和调试版本的配置各不相同。由于创建此项目时使用的是 ASP.NET Web 服务项目模板,因此 Visual Studio 自动创建这些配置并设置适当的默认选项和其他设置。有关更多信息,请参见如何:设置调试和发布配置。
本演练中,您将在 Web 服务中放置一个断点,并使用“开始执行(带调试)”方法。有关更多信息,请参见如何:调试托管代码中的 Web 服务。
调试前,请验证调试设置。有关更多信息,请参见调试准备:XML Web services 项目。
使用断点并启动 Web 服务,同时进行调试
-
在“调试”菜单上,选择“新建断点”,然后选择“在函数处中断”。
在“函数”选项卡上,在“函数”框中键入 ConvertTemperature,并单击“确定”以在 ConvertTemperature 方法声明中添加一个断点。
-
在“调试”菜单上单击“启动”,然后在“未启用调试”窗口中单击“确定”以启动调试。
该命令指示 Visual Studio 在调试器中运行 Web 服务。Visual Studio 生成项目并将其部署到指定的开发服务器中。完成后,默认的浏览器会显示部署服务器的 .asmx 文件。
在浏览器中打开 .asmx 文件时,Web 服务会返回一个服务帮助页,提供有关 Web 服务的信息。“服务说明”链接连接至包含 Web 服务的正式服务说明的 XML 文档。有关更多信息,请参见 XML Web services 说明。
-
在服务帮助器页上,单击 ConvertTemperature 链接。
-
在 dFahrenheit 框中键入数字 212,再单击“调用”按钮。
当处理到达 ConvertTemperature 函数时,处理停止。Visual Studio 调试器突出显示包含断点的行,在该调试器暂停时,您可以执行各种任务。有关更多信息,请参见调试器指南和查看调试器中的数据。
-
在“调试”菜单上单击“继续”可继续进行处理。
-
Web 服务将以返回 XML 文档中的转换值的方式做出响应,如下所示:
复制代码
100
若要停止运行 Web 服务并返回到代码编辑器,请在“调试”菜单上单击“停止调试”。
-
在“调试”菜单上单击“删除所有断点”。
部署 Web 服务
若要使 Web 服务可由他人使用,必须将其部署到可供您希望支持的客户端访问的 Web 服务器。若要将 Web 服务部署到开发服务器以外的服务器,可以添加 Web 安装项目或者将所需的文件复制到目标服务器。本演练中,可以选择部署此 Web 服务的方式。有关更多信息,请参见如何:在托管代码中部署 Web 服务。
使用 Web 安装项目部署 Web 服务
-
在“文件”菜单上,指向“添加”,再单击“新建项目”。
-
选择“其他”节点,再选择“安装和部署项目”节点,再单击“Web 安装项目”。
-
在“名称”框中键入 TempConvert1WebSetup,再单击“确定”。
说明:
默认情况下,在部署服务器上创建虚拟目录时,安装程序将使用部署项目名称。
-
在“文件系统编辑器”的左窗格中选择“Web 应用程序文件夹”。有关更多信息,请参见文件系统编辑器。
-
在“解决方案资源管理器”中右击 TempConvert1WebSetup,指向“添加”,再单击“项目输出”。
-
在“添加项目输出组”对话框中,选择“内容文件”。有关更多信息,请参见如何:在文件系统编辑器中添加和移除项目输出。
-
“内容文件”组由 Web 服务的以下文件组成:Service1.asmx、Global.asax 和 Web.config。有关更多信息,请参见如何:在托管代码中部署 Web 服务。
-
-
单击“确定”。
-
在“解决方案资源管理器”中右击 TempConvert1WebSetup 项目,然后在快捷菜单上单击“生成”。
该操作将在本地项目目录中创建一个 Windows Installer 文件。执行该文件即可安装 Web 应用程序。
通过复制项目来部署 Web 服务
-
在“解决方案资源管理器”中,选择“TempConvert1”项目。
-
在“项目”菜单上单击“复制网站”。
-
单击“连接到”下拉框旁边的图标来打开“打开网站”对话框。浏览到要复制项目的目标位置。
-
在“源网站”窗格中,选择要复制的文件,并通过单击右箭头图标将它们移到“远程网站”窗格中。.
-
单击“复制网站”以复制该网站。
最后,若要创建访问此 Web 服务的客户端应用程序,请参见下列内容之一:
请参见