SOAP Web Service in .NET Core

Introduction

In this article, I am going to demonstrate how you can create SOAP APIs in .NET Core, especially .NET 6.

Let's start by creating a project in Visual Studio.

Create a new project

Choose one of the following ASP.NET Core Web App or ASP.NET Core Web App (Model-View-Controller).

2. Choose ASP.NET Core Web App and create a project.

Configure new project

3. Create Business Logic Folder in Project.

Business Logic Folder

4. Create a Service/Interface in that folder for SOAP APIs.

Create Service

5. Add/Install SoapCore NuGet package from NuGet Package Manager.

NuGet Package Manager

6. Add the below code in your SoapService.

using System.ServiceModel;

namespace SoapInNetCore.BusinessLogic
{
    [ServiceContract]
    public interface ISoapService
    {
        [OperationContract]
        string Sum(int num1,int num2);
    }

    public class SoapService : ISoapService
    {
        public string Sum(int num1, int num2)
        {
            return $"Sum of two number is: {num1+ num2}";
        }

    }
}

7. Now, we have to register the dependency and route of that service in the Program.cs class.

In the provided code snippet, I’ve registered the SoapService dependency and configured the endpoint for SoapService.

using SoapCore;
using SoapInNetCore.BusinessLogic;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddSoapCore();
builder.Services.AddScoped<ISoapService, SoapService>();

var app = builder.Build();

app.UseRouting();

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

app.Run();

8. Now run the project and redirect to the endpoint /Service.asmx.

Service

To consume SOAP service in .NET

1. Add service reference in Client Project and choose WCF Web Service.

WCF Web Service

2. Now, in the URL, place your SOAP Service URL and click on the Go Button to check service has been exposed.

As we can see that we have one endpoint called Sum, which we can consume in our client project.

Client Project

Click on the Next button, and finish the setup.

Configure Progress

As you can see above, SS Service Reference has successfully been added.

Now, proceed to include the following line of code in the section where you want to consume this service.

ISoapService soapServiceChannel = new SoapServiceClient(SoapServiceClient.EndpointConfiguration.BasicHttpBinding_ISoapService_soap);
var sumResponse = await soapServiceChannel.SumAsync(new SumRequest()
{
    Body = new SumRequestBody()
    {
        num1 = 2,
        num2 = 3
    }
});
Console.WriteLine(sumResponse.Body.SumResult);

You can also consume this service from Postman.

Consume Service

Download the project from the following link.