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