当前位置: 首页 > news >正文

C# netcore 创建WebService(SoapCore)

C# netcore 创建WebService(SoapCore)

在NetCore时代开发WebService和FrameWork时代差别有一点儿大,毕竟NetCore是跨平台的一个框架,NetCore 无法直接创建WebService 可以借助SoapCore来创建,下面我就使用Visual Studio2019开发一个示例服务程序。你依然要注意我这个我写的这个demo是soap1.2。在开发前你必须清楚这一点,因为有很多时候SOAP1.1和SOAP1.2 并不通用。至于soap1.1我暂时不用netcore写示例了:

文章目录

    • C# netcore 创建WebService(SoapCore)
  • 一、创建一个netcore版本空项目
  • 二、通过NuGet安装SoapCore
  • 三、代码示例编写
  • 四、VS运行项目
  • 五、调用Webservice接口

一、创建一个netcore版本空项目

在这里插入图片描述

二、通过NuGet安装SoapCore

在这里插入图片描述
这里没有版本要求,安装最新版本即可:

三、代码示例编写

三、这时我们新一个类用于示例的返回和接受参数,类名StudentModel 代码如下:

[DataContract]
    public class StudentModel
    {
        /// 
        /// 学号
        /// 
        [DataMember]
        public string Sno { get; set; }
        /// 
        /// 姓名
        /// 
        [DataMember]
        public string Name { get; set; }

        /// 
        /// 班级
        /// 
        [DataMember]
        public string Grade { get; set; }
        /// 
        /// 生日
        /// 
        [DataMember]
        public DateTime Birthday { get; set; }
    }

添加接口约束IContract,我们和framework下保持一致,实现两个方法,Get和Add代码如下:
注:接口属性必须引用:[ServiceContract]

[ServiceContract]
    public interface IContract
    {
        /// 
        /// 查询学生信息
        /// 
        /// 学号
        /// 学生信息
        [OperationContract]
        StudentModel Get(string sno);
        /// 
        /// 添加学生信息
        /// 
        /// 学生信息
        /// result
        [OperationContract]
        int Add(StudentModel student);
    }

添加服务实现类StudentService,来实现我们的约定服务接口。代码如下:

public class StudentService : IContract
    {
        public StudentModel Get(string sno)
        {
            return new StudentModel() { Sno = sno, Name = "小红", Grade = "202002", Birthday = new DateTime(2012, 8, 15) };
        }
        /// 
        /// 添加学生信息
        /// 
        /// 
        /// 
        public int Add(StudentModel student)
        {
            return 1;
        }
    }

在netcore中添加注入,这个想必不会陌生吧,现在netcore的注入已经很普遍了,修改 Startup.cs类中的ConfigureServices方法,添加代码如下:

services.TryAddSingleton<IContract, StudentService>();
services.AddSoapCore();

写法二:

 #region 注入WebService服务
            services.TryAddScoped<IContract, StudentService>();
            services.AddSoapCore();
            #endregion 注入WebService服务

添加服务发布接口地址,修改Startup.cs类中的Configure方法,在最后修改UseEndpoints这一部分代码如下:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();
            app.UseSoapEndpoint("/StudentService.asmx", new BasicHttpBinding(), SoapSerializer.XmlSerializer);

        }

四、VS运行项目

四、点击Visual Studio2019的运行按钮,此时便可以在浏览器里预览了。直接运行看到的页面是错误的地址,需要手动改一下地址如下:https://localhost:44376/StudentService.asmx,添加后半部分StudentService.asmx。我们便可以看到正常的返回了,如下图:

在这里插入图片描述

至此我们已经完成了一个简单的WebService,这个服务实现两个接口,一个Get 一个Add方法。

五、调用Webservice接口

1.使用Postman工具调用封装的Get方法示例
在这里插入图片描述

在这里插入图片描述
C#代码调用示例:

var client = new RestClient("http://localhost:44376/StudentService.asmx/Get");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "text/xml");
request.AddParameter("text/xml", "<sno>测试</sno>",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);

相关文章:

  • ansible配置主机间免密登陆
  • 在项目中操作MySQL
  • 3倍通气的医用外科口罩,佩戴舒适过滤不打折
  • Linux文件及目录结构
  • lec formality inconclusive举例
  • 2022极端高温!人工智能如何预测森林火灾?| 万物AI
  • redis五大数据类型+redis6 新类型(详解+指令)
  • 【云原生 | 从零开始学Kubernetes】十七、Kubernetes核心技术Service
  • 传述最详细的干货,让简历面试不再成为你找工作的绊脚石
  • 【云原生丨Kubernetes系列⑥】集群的WEB UI管理⼯具:Dashboard 插件
  • 开学季征文|一个爱立Flag 的大冤种
  • 《MySQL实战45讲》——学习笔记04-05 “深入浅出索引、最左前缀原则、索引下推优化“
  • 翻译: Transformer一种用于语言理解的新型神经网络架构 Google AI
  • 两种方法,计算带地形起伏的地表面积
  • 全景分割(Panoptic Segmentation)(CVPR 2019)
  • 07.Android之多媒体问题
  • express.js的介绍及使用
  • JAVA_NIO系列——Channel和Buffer详解
  • JS基础之数据类型、对象、原型、原型链、继承
  • 浮动相关
  • 机器学习学习笔记一
  • 技术胖1-4季视频复习— (看视频笔记)
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 前端面试之闭包
  • 十年未变!安全,谁之责?(下)
  • 试着探索高并发下的系统架构面貌
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 一道面试题引发的“血案”
  • 译有关态射的一切
  • 自动记录MySQL慢查询快照脚本
  • Java数据解析之JSON
  • 大数据全解:定义、价值及挑战
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​TypeScript都不会用,也敢说会前端?
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (ros//EnvironmentVariables)ros环境变量
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (六)vue-router+UI组件库
  • (原創) 未来三学期想要修的课 (日記)
  • .bat文件调用java类的main方法
  • .net CHARTING图表控件下载地址
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .net 中viewstate的原理和使用
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET连接MongoDB数据库实例教程
  • .net下的富文本编辑器FCKeditor的配置方法
  • @Bean注解详解
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @property @synthesize @dynamic 及相关属性作用探究
  • @ResponseBody
  • @Transactional 竟也能解决分布式事务?
  • [04] Android逐帧动画(一)