1、打开vs2019,其它版本一样;
2、新建一个web程序,注:不要建立core类型的web,core目前不支持,如下图:
3、再在项目里点添加-新建项-确定
4、然后选择web服务(asmx),即选择webservic服务;
5、取个名再点添加,我这里取test.asmx;
6、这里看到的跟我们正常的控制器写法差不多,不过个test类继承了System.Web.Services.WebService;
7、写一个webapi一样的接口,我这里写a+b的结果,其它调用数据库数据等跟webapi的控制器写法一模一样,要注意的是,每个webservice引出要加上:[WebMethod]
8、点击运行,在ie浏览器运行,注意:webservice可以在vs环境运行和iis上运行,不能在其它环境运行(例如在dos状态下 【dotnet 系统名】运行是不行);
这里有sum引出就是对的。
9、点开sum,会出现a,b的值;
10、这里输入a:5,b:8点调用,看结果;
11、如果出现上面的字样,结果是13也是对的。说明这里webservice调用后的结果是以xml结果输出,不能改变成json,可以自己写个插件在调用端转化,下面演示调用这个webservice,不要关闭现有的运行,重新开一个vs,我这里利用winform来调用,在webapi或mvc里一样的调用步聚;
-----------------------------以下调用演示---------------------------------
12、打开vs2019,新建一个窗体项目,在窗体里加入如下的控件,然后双击调用webservice按钮;
13、点击右边的添加引用服务(注意不是添加引用)
14、在地址栏输入:http://localhost:53107/test.asmx,然后点转到或发现,如果没有下面的图,则webservice没有运行,运行后就会出现,在webapi、mvc环境下也一样,(注意,如果我们写webservice给客户,除了写接口文档给客户,这个地址也要开放给客户);
15、在命名空间下面取一个名,最好不要用默认的,因为如果你的环境有多个webservice接口整合,则会搞乱,所以取个名,我这里取testWS,然后点确定;
确定后,在项目面会多了一个服务连接下的testWS命名空间;
在刚才的按钮下的button1_Click函数调用webservice接口;(注:在testWS命名空下写的testSoapClient,不管是什么命名空间,都是[namespace.testSoapClient])看下面的代码;
private void button1_Click(object sender, EventArgs e)
{
testWS.testSoapClient ws = new testWS.testSoapClient();
label4.Text = ws.sum(double.Parse(textBox1.Text), double.Parse(textBox2.Text)).ToString();
}
16、完成后;运行输入a和b的值,点webservice按钮;
17、调用计算正确,说明就是对的。可以写其它接口调试一下。
18、最后说明,如果你的webservice比较多,而且接口有分类,可以建立一个文件夹,再添加webservice,再分享连接给客户,如果同一个客户,尽量做成一个文件,因为一个文件,可以带多个接口,多个不同的客户,用不同文件方式加于区分。
代码下载:https://download.csdn.net/download/u010086628/21491852