商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > .NetCore构建Webservice服务的实现步骤

.NetCore构建Webservice服务的实现步骤

  发布于2026-07-23 阅读(0)

扫一扫,手机访问

这个题目听起来可能有点反直觉——既然都已经用上 .NET Core 了,为什么不直接用 API,反而回头去折腾老掉牙的 WebService?但既然能冒出这个需求,背后多半有些让人无奈的场景:客户指定要对接、业务系统历史遗留、领导拍脑袋决定,或者对接方的小工程师只认 .asmx 地址。形势比人强,那就试试新瓶装旧酒吧。

经常用 WebService 的朋友都知道,.NET Core 里没法直接新建一个 WebService 项目。所以咱们先建一个空的 .NET Core 模板,项目取名 TestWebService。框架版本根据实际需求选,建议 6.0 以上,我这里用的是 8.0。

.NetCore构建Webservice服务的实现步骤

项目建好之后,在 NuGet 控制台或管理界面给项目添加 SoapCore 引用。

.NetCore构建Webservice服务的实现步骤

接着新建一个接口文件 IMyWebService.cs,定义服务契约。

using System.ServiceModel;

namespace TestWebService
{
    [ServiceContract]
    public interface IMyWebService
    {
        [OperationContract] // 声明这是一个服务操作(方法)
        string HelloWorld(string name);
    }
}

然后实现这个接口,新建 MyWebService.cs

namespace TestWebService
{
    public class MyWebService : IMyWebService
    {
        public string HelloWorld(string name)
        {
            return $"Hello, {name}!";
        }
    }
}

关键的一步来了:修改 Program.cs,在 builder 后面注册服务。

// 注册服务
builder.Services.AddSoapCore();
builder.Services.AddSingleton();

然后在 app 后面添加终结点。

app.UseRouting();
app.UseEndpoints(endpoints =>
{
    endpoints.UseSoapEndpoint("/MyService.asmx", new SoapEncoderOptions(), SoapSerializer.XmlSerializer);
});

项目的结构以及 Program.cs 的完整代码如下图所示。

.NetCore构建Webservice服务的实现步骤

启动项目,在浏览器里访问 https://localhost:你的端口/MyService.asmx。如果看到下面的页面,说明一个简单的 WebService 已经跑起来了。

.NetCore构建Webservice服务的实现步骤

粗略观察一下,这里绑定的是 SOAP 1.1 协议。

但有些场景下需要用到 SOAP 1.2 协议,该怎么办?其实很简单,注册终结点的时候指定一下消息版本即可。

app.UseEndpoints(endpoints =>
{
    endpoints.UseSoapEndpoint("/MyService.asmx", 
        new SoapEncoderOptions { MessageVersion = System.ServiceModel.Channels.MessageVersion.Soap12WSAddressing10 }, 
        SoapSerializer.XmlSerializer);
});

再次启动并刷新页面,你会发现已经绑定上了 1.2 协议。

最后随便新建一个项目,添加服务引用,就可以看到我们刚刚搭建的 WebService 被自动发现了。后续把之前的业务逻辑迁移过来,一切就顺理成章了。

.NetCore构建Webservice服务的实现步骤

本文转载于:https://www.jb51.net/aspnet/356177igo.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注