背景说明
之前写的很多代码,都是在局域网内使用,采用的用户身份认证方式是Windows集成身份认证,客户端调用服务端WebService时的认证方式也是Windows集成身份认证。最近有同事需要将认证方式改为用户名和密码、CA证书方式,由于以前接触比较少,于是想先建个测试环境测试一下。本文先简单记录如何在虚拟机中部署WebService服务,并进行调用测试。
虚拟机中部署的操作系统是Windows Server 2008 R2,数据库部署的是Sql Server 2008R2,这两个的安装方式就不介绍了,不清楚的朋友可以百度搜索下载地址及安装方式。
添加IIS
刚安装完成的Windows Server 2008 R2中是没有带IIS的,需要手动到控制面板的打开关闭Windows功能中去添加IIS功能。具体步骤如下列图形所示,在安装过程中根据需要勾选角色和功能。
点击添加角色。
勾选Web服务器及其它需要的服务。
至此,IIS部署成功,下面就是写个简单的WebService进行测试,测试部署、调用是否正常。
编写、部署、测试WebService
编写支持加减乘除的WebService,代码如下:
public class MathService : System.Web.Services.WebService
{
[WebMethod]
public int Add(int a, int b)
{
return a + b;
}
[WebMethod]
public int Sub(int a, int b)
{
return a - b;
}
[WebMethod]
public int Multi(int a, int b)
{
return a * b;
}
[WebMethod]
public int Divide(int a, int b)
{
return a / b;
}
}
编辑上述代码,并将Web.config、asmx和Bin文件夹复制到服务器的inetpub\wwwroot文件夹下。
然后在IIS中新建网站,设置网站名称为MathServices,配置物理文件位置,设置端口,最低按点击确定按钮,WebService部署完成。在IIS中,将WebService的身份验证方式先设置为匿名访问进行测试。
首先在虚拟机的服务器中测试是否可以浏览WebService,直接在IIS的WebService中切换到内容视图,然后在asmx文件上点右键,选择浏览即可。如果在IE上浏览服务没有问题,则将服务地址复制到物理机的浏览器中,将地址中的localhost改为服务器的ip,然后测试是否能访问成功(如何无法访问,可能是服务器的防火墙的原因,简单点的话就直接关掉服务器防火墙服务)。
最后写个客户端调用程序进行功能测试,在项目中添加服务引用,如下图所示。
调用代码及调用结果如下所示:
int numA = Convert.ToInt32(txtA.Text);
int numB = Convert.ToInt32(txtB.Text);
MathServiceReference.MathServiceSoapClient mathSrv = new MathServiceReference.MathServiceSoapClient();
switch (comboOperator.SelectedIndex)
{
case 0:
txtResult.Text = Convert.ToString(mathSrv.Add(numA, numB));
break;
case 1:
txtResult.Text = Convert.ToString(mathSrv.Sub(numA, numB));
break;
case 2:
txtResult.Text = Convert.ToString(mathSrv.Multi(numA, numB));
break;
case 3:
txtResult.Text = Convert.ToString(mathSrv.Divide(numA, numB));
break;
}
后文增加用户名、密码方式调用WebService的功能,主要包括增加登录界面,增加数据库表、增加用户验证功能等,经请稍候。
参考文章:
[1]虚拟机安装VMTool时如果出现microsoft runtime dll错误的解决方法,https://blog.csdn.net/weixin_41634085/article/details/91907957
[2]SQL Server 2008R2安装错误—“is not a valid login or you do have permission”,https://blog.csdn.net/wangwenru6688/article/details/50707239