C#使用Asp.Net创建Web Service接口并调用

2024-07-19 1383阅读

目录

一.创建Asp.net web应用以及Web Service服务

(1).运行环境

(2)创建项目

二.创建控制台应用来调用上面创建的Web Service


一.创建Asp.net web应用以及Web Service服务

(1).运行环境

开发工具: Visual Studio 2022 Current (免费社区版)

框架版本: .net framework4.7.2,更高的.net 5 、net6貌似没有默认提供带web service的asp.net 应用模板了。

确保VS的工作负荷有勾选下方箭头所指的模块

C#使用Asp.Net创建Web Service接口并调用

确认环境没有问题之后就可以开始创建项目了。

(2)创建项目

打开vs点创建新项目

C#使用Asp.Net创建Web Service接口并调用

选择箭头指向的项目模板,注意是.NET Framework后缀的,带Core的都是版本比较新的框架项目模板,选择好之后点击下一步选择项目存放的路径以及项目命名、解决方案命名、框架版本,

我这里就用默认的命名了,框架我选.net framework 4.7.2,然后点击创建即可开始下一步。

C#使用Asp.Net创建Web Service接口并调用

点击创建进去会出来一个模板进一步的配置,因为我这也只是整个Web Service接口来而已就选空模板,直接在本机跑也不需要Docker之类的

C#使用Asp.Net创建Web Service接口并调用

搞定之后直接创建,创建完成后右键项目点添加->新建项->找到Web 服务(AMSX),选择之后点添加就能创建一个web service默认的hello world模板

C#使用Asp.Net创建Web Service接口并调用

C#使用Asp.Net创建Web Service接口并调用

加上之后直接启动就可以看到一个网页的服务说明以及对应方法的测试路由,以及对应的方法

C#使用Asp.Net创建Web Service接口并调用C#使用Asp.Net创建Web Service接口并调用

在调试模式下可以直接通过上面的调用按钮调用指定的方法,这里点一下调用会返回一个xml并转换成网页C#使用Asp.Net创建Web Service接口并调用

打包之后这个操作就不支持了,到这里创建就算完成了。

这里因为打开的文档就是刚刚创建的web服务所以vs会直接把路由跳到这里,如果当前打开的文档不是创建的WebService1类运行起来就会报服务器没有开启目录浏览,所以要像下面设置一下项目属性。

C#使用Asp.Net创建Web Service接口并调用

二.创建控制台应用来调用上面创建的Web Service

直接右键解决方案添加一个控制台应用,这里我用HttpClinet类所以用的框架版本是.net 6

且使用顶级语句,因为就几句话emmmm,发送报文运行一下web服务把报文copy下来就好。

本地测试的时候可以用http直接调用,虽然不知道为什么部署到服务器之后就只能通过Soap协议丢xml报文来调了。下面是代码报文是运行一下web服务把对应方法的post请求直接copy下来

C#使用Asp.Net创建Web Service接口并调用

返回的就是一坨xml,箭头指的就是方法返回的Hello world,可以用.net自带的linq来解析很方便,命名空间是这个

using System.Xml.Linq;

这是上面运行的代码。

using System.Net.Http.Headers;
var clinet = new HttpClient();
var xml = "" +
    "\r\n\r\n" +
    "  \r\n    \r\n " +
    " \r\n";//把请求xml直接copy下来
var httpcotent = new StringContent(xml);//创建一个http字符报文实例,把上面的报文丢进去当正文
httpcotent.Headers.ContentType = MediaTypeHeaderValue.Parse(" application/soap+xml; charset=utf-8");//设置报文的内容标头,一样上启动的页面上copy下来,soap1.1、soap1.2都一样,我这里用的是Soap1.2
var respon = await clinet.PostAsync(requestUri: "http://localhost:56298/WebService1.asmx?op=HelloWorld", content: httpcotent);//uri一样上去打开那个方法从浏览器copy下来
Console.WriteLine(await respon.Content.ReadAsStringAsync());//异步读取服务器返回的所有数据并且转成字符串,这里回复的会是一个xml文本
Console.ReadKey();

下面是使用XDocument类进行解析xml数据的代码

C#使用Asp.Net创建Web Service接口并调用

using System.Net.Http.Headers;
using System.Xml.Linq;
var clinet = new HttpClient();
var xml = "" +
    "\r\n\r\n" +
    "  \r\n    \r\n " +
    " \r\n";//把请求xml直接copy下来
var httpcotent = new StringContent(xml);//创建一个http字符报文实例,把上面的报文丢进去当正文
httpcotent.Headers.ContentType = MediaTypeHeaderValue.Parse(" application/soap+xml; charset=utf-8");//设置报文的内容标头,一样上启动的页面上copy下来,soap1.1、soap1.2都一样,我这里用的是Soap1.2
var respon = await clinet.PostAsync(requestUri: "http://localhost:56298/WebService1.asmx?op=HelloWorld", content: httpcotent);//uri一样上去打开那个方法从浏览器copy下来
var responstr = await respon.Content.ReadAsStringAsync();
Console.WriteLine(responstr);//异步读取服务器返回的所有数据并且转成字符串,这里回复的会是一个xml文本
Console.ReadKey();
Console.WriteLine("下面用XDocument来取返回的值Hello World");
var xd = XDocument.Parse(responstr);//将返回的xml文本转换成XDocument对象
Console.WriteLine(xd.Root?.Value);//因为直接就是一个节点就不用Find了直接root.value
Console.ReadKey();
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]