首页 > 技术文章 > C# netcore 开发WebService(Soap)

zwbsoft 2021-06-04 17:01 原文

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

(1)创建新项目,选择ASP.NET Core Web应用程序 ,如下图

(2)配置新项目,为自己的项目起个名字,然后点击下一步,如下图

(3)进入模板选择页面,选择空,如下图

(4)项目建立好后需要我们通过NuGet引用开发依赖包  SoapCore,如下图一样添加引用。

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

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

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

(6)添加接口约束IContract,我们和framework下保持一致,实现两个方法,Get和Add代码如下:

 [ServiceContract]
    public interface IContract
    {
        /// <summary>
        /// 查询学生信息
        /// </summary>
        /// <param name="sno">学号</param>
        /// <returns>学生信息</returns>
        [OperationContract]
        StudentModel Get(string sno);
        /// <summary>
        /// 添加学生信息
        /// </summary>
        /// <param name="student">学生信息</param>
        /// <returns>result</returns>
        [OperationContract]
        int Add(StudentModel student);
    }

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

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

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

services.TryAddSingleton<IContract, StudentService>();

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

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

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

        }

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

推荐阅读