WebEnh

.net7 mvc jquery bootstrap json 学习中 第一次学PHP,正在研究中。自学进行时... ... 我的博客 https://enhweb.github.io/ 不错的皮肤:darkgreentrip,iMetro_HD
随笔 - 1079, 文章 - 1, 评论 - 75, 阅读 - 174万
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

net core 建立webservice项目

Posted on   WebEnh  阅读(161)  评论(0编辑  收藏  举报

1、创建项目

 

 

2、通过NuGet安装SoapCore

 

3、创建服务接口及实现类

本项目会创建2个webservice服务文件用于测试,所以创建了2个model类和2个接口文件。

 

Model类:

[DataContract]
public class FactoryModel
{
/// <summary>
/// 工厂号
/// </summary>
[DataMember]
public string Fno { get; set; }
/// <summary>
/// 姓名
/// </summary>
[DataMember]
public string Name { get; set; }

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

}
接口:

[ServiceContract]
public interface IMesOperate
{
/// <summary>
/// 查询工厂信息
/// </summary>
/// <param name="fno">学号</param>
/// <returns>工厂信息</returns>
[OperationContract]
FactoryModel GetInfo(string fno);
/// <summary>
/// 添加工厂信息
/// </summary>
/// <param name="factory">工厂信息</param>
/// <returns>result</returns>
[OperationContract]
string AddInfo(FactoryModel factory);
}
[ServiceContract]
public interface IScadaOperate
{
/// <summary>
/// 查询学生信息
/// </summary>
/// <param name="sno">学号</param>
/// <returns>学生信息</returns>
[OperationContract]
UserModel GetInfo(string sno);
/// <summary>
/// 添加学生信息
/// </summary>
/// <param name="student">学生信息</param>
/// <returns>result</returns>
[OperationContract]
int AddInfo(UserModel student);
}
实现类:

public class MesService : IMesOperate
{
public FactoryModel GetInfo(string fno)
{
return new FactoryModel() { Fno = fno, Name = "第一工厂" };
}
/// <summary>
/// 添加工厂记录
/// </summary>
/// <param name="factory"></param>
/// <returns></returns>
public string AddInfo(FactoryModel factory)
{
return factory.Name;
}
}
public class ScadaService : IScadaOperate
{
public UserModel GetInfo(string sno)
{
return new UserModel() { Sno = sno, Name = "小红" };
}
/// <summary>
/// 添加学生信息
/// </summary>
/// <param name="student"></param>
/// <returns></returns>
public int AddInfo(UserModel student)
{
return 1;
}
}
4、修改Startup.cs

修改ConfigureServices函数

public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
//下面为增加项
services.TryAddSingleton<IScadaOperate, ScadaService>();
services.TryAddSingleton<IMesOperate, MesService>();
services.AddSoapCore();
}
修改Configure函数,设置EndPoint。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//省略非关键代码...

app.UseSoapEndpoint<IScadaOperate>("/Scada/ScadaService.asmx", new BasicHttpBinding(), SoapSerializer.XmlSerializer);
app.UseSoapEndpoint<IMesOperate>("/Mes/MesService.asmx", new BasicHttpBinding(), SoapSerializer.XmlSerializer);


}
5、启动项目

 

7、创建net core测试项目

 

8、net core测试项目添加服务连接,以及通过NuGet安装SoapCore

 

 

填写webservice服务访问额地址,点击“转到”查看连接是否正常。

 

 

9、net core测试项目测试服务访问

class Program
{
static void Main(string[] args)
{
//正式使用client对象创建单例即可
ServiceReference1.ScadaOperateClient client = new ScadaOperateClient();
var response = client.GetInfoAsync("123");
var result = response.Result;
Console.WriteLine(JsonConvert.SerializeObject(result));

//正式使用client对象创建单例即可
ServiceReference2.MesOperateClient client2 = new MesOperateClient();
var response2 = client2.GetInfoAsync("123");
var result2 = response2.Result;
Console.WriteLine(JsonConvert.SerializeObject(result2));


Console.ReadLine();
}
}


10、创建framework测试项目

 

11、framework测试项目添加服务连接

 

 

 

 

12、framework测试项目测试服务访问

class Program
{
static void Main(string[] args)
{
//正式调用只需创建单例
WebServiceTest2.ScadaService.IScadaOperate service = new WebServiceTest2.ScadaService.IScadaOperate();
var s=service.GetInfo("123");
Console.WriteLine(JsonConvert.SerializeObject(s));
Console.ReadLine();
}
}


13、更改命名空间

若项目需要,需要更改默认的webservice命名空间,可以在接口类更改特性标签,如下图:


————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/zouzh/article/details/124086104

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2019-05-27 cshtml 中的 AppState = Context.Application 和 控制器中的 Application 也相等
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

了解更多