注意:本文中的信息还适用于由 ASP.NET 和 Microsoft® Internet 信息服务 (IIS) 承载(使用 .NET Remoting 技术)的远程对象。
创建一个简单的 Web 服务
您将在此过程中创建一个简单的 Web 服务,供测试之用。
•在 Web 服务主机上创建一个简单的 Web 服务
- 1.启动 Visual Studio .NET,创建一个新的名为 SecureMath 的 Visual C# ASP.NET Web 服务应用程序。
- 2.将 service1.asmx 重命名为 math.asmx。
- 3.打开 math.asmx.cs 并将 Service1 类重命名为 math。
- 4.将下面的 Web 方法添加到 math 类。
[WebMethod]
public long Add(long operand1, long operand2)
{
return (operand1 + operand2);
}
- 5.要创建 Web 服务,在“生成”菜单上单击“生成解决方案”。
将 Web 服务虚拟目录配置为需要 SSL
您的 Web 服务在 Internet 信息服务 (IIS) 上运行并依赖 IIS 提供 SSL 支持。
此过程假设您在 Web 服务器上安装了有效的服务器证书。有关安装 Web 服务器证书的详细信息,请参见如何在 Web 服务器上设置 SSL。
•使用 IIS 配置 Web 服务的虚拟目录以使用 SSL
- 1.在 Web 服务主机上,启动 IIS。
- 2.导航到 SecureMath 虚拟目录。
- 3.右键单击 SecureMath,然后单击“属性”。
- 4.单击“目录安全性”选项卡。
- 5.单击“安全通信”下的“编辑”。如果无法使用“编辑”,则可能没有安装 Web 服务器证书。
- 6.选择“要求安全通道 (SSL)”复选框。
- 7.单击“确定”,然后再次单击“确定”。
- 8.在“继承覆盖”对话框中,单击“全选”,然后单击“确定”以关闭 SecureMath 属性对话框。
这会将新的安全设置应用于虚拟根目录下的所有子目录。
使用浏览器测试 Web 服务
此过程确保 Web 服务器证书是有效的,而且已经由客户端计算机所信任的证书颁发机构 (CA) 颁发。
•使用 SSL 从 Internet Explorer 调用 Web 服务
- 1.在客户端计算机上启动 Internet Explorer 并(使用 HTTPS)浏览到 Web 服务。例如:https://WebServer/securemath/math.asmx 浏览器应该显示 Web 服务测试页。
- 2.如果成功显示了 Web 服务测试页,就关闭 Internet Explorer 并转到过程“开发一个 Web 应用程序以调用服务组件”。
- 3.如果显示的是“安全警报”对话框(如图 1 所示),单击“查看证书”查看颁发 Web 服务器证书的 CA 的身份。您必须在客户端计算机上安装该 CA 的证书。过程“在客户端计算机上安装证书颁发机构的证书”对此进行了说明。
- 4.关闭 Internet Explorer。
“安全警报”对话框
在客户端计算机上安装证书颁发机构的证书
此过程在客户端计算机上安装 CA 所颁发的证书,并将该 CA 作为受信任的根证书颁发机构。客户端计算机必须信任该颁发证书的 CA,以便接受服务器证书,但不显示“安全警报”对话框。
•如果在 Windows 域中使用 Microsoft 证书服务作为 CA
- 1.仅在您的 Web 服务器证书是由 Microsoft 证书服务 CA 颁发的情况下,才需执行此过程。否则,如果您有 CA 的 .cer 文件,请转到第 8 步。
- 2.启动 Internet Explorer 并浏览到 http://hostname/certsrv,其中 hostname 是颁发服务器证书的 Microsoft 证书服务所在计算机的名称。
- 3.单击“检索 CA 证书或证书吊销列表”,然后单击“下一步”。
- 4.单击“安装此 CA 证书路径”。
- 5.在“根证书存储”对话框中,单击“是”。
- 6.使用 HTTPS 浏览到 Web 服务。例如:https://WebServer/securemath/math.asmx 浏览器中现在应该正确显示 Web 服务测试页,而不显示“安全警报”对话框。现在您已经在个人受信任根证书存储中安装了 CA 的证书。您必须将 CA 的证书添加到计算机的受信任根存储中,然后才能够从 ASP.NET 页成功调用 Web 服务。
- 7.重复第 1 步和第 2 步,单击“下载 CA 证书”,然后将其保存到本地计算机上的某个文件中。
- 8.现在执行其余步骤。如果有 CA 的 .cer 证书文件
- 9.在任务栏上,单击“开始”,然后单击“运行”。
- 10.键入“mmc”,然后单击“确定”。
- 11.在“控制台”菜单上,单击“添加/删除管理单元”。
- 12.单击“添加”。
- 13.选择“证书”,然后单击“添加”。
- 14.选择“计算机帐户”,然后单击“下一步”。
- 15.选择“本地计算机 (运行这个控制台的计算机):”,然后单击“完成”。
- 16.单击“关闭”,然后单击“确定”。
- 17.在 MMC 管理单元的左窗格中展开“证书 (本地计算机)”。
- 18.展开“受信任的根证书颁发机构”。
- 19.右键单击“证书”,指向“所有任务”,然后单击“导入”。
- 20.单击“下一步”跳过“证书导入向导”的“欢迎”对话框。
- 21.输入 CA 的 .cer 文件的路径和文件名。
- 22.单击“下一步”。
- 23.选择“将所有的证书放入下列存储区”,然后单击“浏览”。
- 24.选择“显示物理存储区”。
- 25.在列表中展开“受信任的根证书颁发机构”,然后选择“本地计算机”。
- 26.依次单击“确定”、“下一步”以及“完成”。
- 27.单击“确定”关闭确认消息框。
- 28.在 MMC 管理单元中刷新“证书”文件夹的视图,确认该 CA 的证书已列出。
- 29.关闭 MMC 管理单元。
开发一个 Web 应用程序以调用 Web 服务
本过程创建一个简单的 ASP.NET Web 应用程序。您将使用此 ASP.NET Web 应用程序作为客户端应用程序来调用 Web 服务。
•创建一个简单的 ASP.NET Web 应用程序
1.在 Web 服务客户端计算机上,创建一个新的名为 SecureMathClient 的 C# ASP.NET Web 应用程序。
2.(使用 HTTPS)添加对 Web 服务的 Web 引用。
- 1.右键单击解决方案资源管理器中的“引用”节点,然后单击“添加 Web 引用”。
- 2.在“添加 Web 引用”对话框中,输入 Web 服务的 URL。确保使用 HTTPS URL。
注意:如果您已经设置了对 Web 服务的 Web 引用但没有使用 HTTPS,您可以手动编辑生成的代理类文件并更改代码行,将 Url 属性的设置从 HTTP URL 更改为 HTTPS URL。
- 3.单击“添加引用”。
3.打开 WebForm1.aspx.cs 并在现有 using 语句之下添加下面的 using 语句。
using SecureMathClient.WebReference1;
4.在“设计器”模式下查看 WebForm1.aspx,并使用以下 ID 创建一个与图 2 类似的窗体:
•operand1
•operand2
•result
•add
图 2
WebForm1.aspx 窗体
5.双击“Add”按钮,创建一个按钮单击事件处理程序。
6.将下面的代码添加到该事件处理程序中。
private void add_Click(object sender, System.EventArgs e)
{
math mathService = new math();
int addResult = (int) mathService.Add( Int32.Parse(operand1.Text),
Int32.Parse(operand2.Text));
result.Text = addResult.ToString();
}
7.在“生成”菜单上,单击“生成解决方案”。
8.运行该应用程序。输入要相加的两个数,然后单击“Add”按钮。该 Web 应用程序将使用 SSL 调用 Web 服务。