How to Create SOAP Web Service Using WSDL in ASP.NET Core

In this tutorial, we will guide you through the process of implementing a SOAP (Simple Object Access Protocol) service using WSDL (Web Services Description Language) in Visual Studio .Net Core. SOAP is a widely used protocol for exchanging structured information in web services, and WSDL serves as a standard for describing the web service interface.Despite the rise of REST, over 70% of enterprise-level banking systems still rely on SOAP for secure, reliable web services, showcasing its critical role in sectors like finance and healthcare, with giants like Salesforce extensively using SOAP APIs.

“NetSuite, a leading cloud ERP from Oracle, still offers SOAP APIs which are capable of performing batch transactions via API, whereas such a feature is not available with its REST API.”

“ClearBooks, a top accounting software provider, exclusively offers a SOAP API, emphasizing the protocol’s importance in secure and complex financial data transactions.”

Let’s deep dive into how to consume or implement any SOAP-based API in ASP.net Core

How to Create SOAP Web Service Using WSDL in Visual Studio .NET Core

Creating a SOAP web service WSDL in Visual Studio ASP.NET Core

  1. Launch the Visual Studio 2022 on your machine.

    To use the code examples provided in this article, you should have Visual Studio 2022 installed in your system. If you don’t already have a copy, you can download Visual Studio 2022 here
    Screenshot of Visual Studio 2022 start page showing recent projects on the left, including a SOAP web service. The "Create a new project" option is highlighted on the right.

  1. Create a New Project.

    Navigate to “File” > “New” > “Project…”
    Choose the appropriate project template, such as “ASP.NET Core WebAPI”
    Screenshot of the "Create a New Project" window in Visual Studio highlighting the ASP.NET Core Web API project template option, with a nod to traditional SOAP web service capabilities.

  2. Set Up the Project in ASP.NET Core Web API and configure project settings, including the project name and location.

    Set-Up-the-Projectin-ASP.NET-Core-Web-API-Configure-project-settings- including-the-project-name-and-location.

  3. Install the SoapCore package

    After creating your Web API project in Visual Studio, incorporate the SoapCore NuGet package into it. Follow these steps:

    • Navigate to the Solution Explorer window,
    • choose the project,
    • right-click, and opt for “Manage NuGet Packages.”

    In the NuGet Package Manager window, locate the SoapCore package and proceed to install it.

    You also have the option to install the SoapCore package using the NuGet Package Manager console. Simply input the following command line to initiate the installation process.

    Screenshot of a command-line interface showing instructions to add a package. Highlighted text reads: "dotnet add package SoapCore", indicating setup for integrating a SOAP web service.

  1. Define the Data Contract.

    In the data contract, we define the characteristics of each Soapservice data type, such as their types, names, and any rules or restrictions. This ensures that clients and services, built with different programming languages or platforms, can communicate effectively.
    This source code snippet defines a C# class named CustomerDataContract for a SOAP web service, featuring a nested Author class. The Author class includes properties for Id, FirstName, LastName, and EmailAddress, complete with get/set methods.

  2. Define the Service Contract

    A service contract has two parts: the service interface describing the service and additional details like message formats and security, all defined using the ServiceContract attribute in C#. This attribute marks an interface or class as a service contract.
    Define the Service Contract

  3. Create a service and add a method of service with customer data

    Create-a-service-and-add-method-in-service-with-customer-data

  4. Register a SOAP service in the Program.cs

    Code snippet demonstrating how to integrate a SOAP web service by using builder.Services.AddSingleton<ICustomerService, CustomerService>();.

  5. Configure the HTTP request pipeline for the SOAP endpoint in Program.cs

    Configure-the-HTTP-request-pipeline-for-the-SOAP-endpoint-in-Program.cs

  6. Complete the source code of the Program.cs

    Screenshot of C# code configuring a web application with using statements, dependency injection for services, and an HTTP request pipeline. Notably, it includes setting up a SOAP web service endpoint for streamlined integration.

  1. Run the SOAP service

    Launch the application and visit the specified endpoint to view the generated WSDL.
    A screenshot of a web page reveals XML code for a "CustomerService" endpoint, showcasing various elements and data types within a SOAP web service.
    Side-by-side comparison of XML code segments in two panels, highlighting differences and similarities in the structure and tags used, essential for understanding SOAP web service integration.

Consume WSDL in .NET Core

Create .NET Core WEB API project same as shown above step

Create client applications to consume the SOAP service. Visual Studio can assist in generating client code based on the WSDL.

  1. Generate reference code from a WSDL file, Right click on “Manage Connected Services”

    Generate-reference-code-from-a-WSDL-file-Right-click-on-Manage-Connected-Services

  2. Click on “Add a service reference”

    Screenshot of a software interface displaying "Connected Services" with options for adding a service dependency or reference, featuring a highlighted "Add a service reference" link for integrating SOAP web services.

  3. Select “WCF Web Service “

    Screenshot of a dialog window titled "Add service reference" displaying options to select service references for an application. "WCF Web Service," highlighted in a red box, illustrates its integration with SOAP web services.

  4. Insert the WSDL URI

    click “Go,” and you’ll receive a list of services, methods, and a Namespace. Use this Namespace to reference methods in the project.
    Screenshot of Add New WCF Web Service window displaying URL input for a SOAP web service, featuring a service list with "CustomerService" and an operation list with "GetCustomers.

  5. Clicking “Next” allows configuration,

    such as specifying the type of collections to generate. In this example, we’ll choose System.Collections.Generic.List.
    Screenshot of a dialog box for adding a new WCF Web Service reference, displaying options for message contracts, collection type, and reusing types in referenced assemblies, tailored for integrating a SOAP web service.

  6. In the final configuration screen,

    choose between public/private classes and opt for synchronous or default asynchronous method generation.
    Screenshot of a software interface for adding a new WCF Web Service reference. The "Generate Synchronous Operations" checkbox is selected, highlighting support for SOAP web service integration. Navigation buttons are neatly arranged at the bottom.

  7. Click “Finish” to initiate scaffolding, and your classes will be generated.

    The service reference configuration progress window details steps like importing metadata and adding a SOAP web service reference. A green check marks success, while options for automatic closure appear at the bottom.

  1. Once the process is complete,

    find the connected service in the Solution Explorer, containing the generated reference with configured endpoints and methods. Choosing synchronous method generation results in various available methods.
    Screenshot of code in an IDE showing highlighted sections for the methods GetCustomers() and GetCustomersAsync() in CustomerDataContract and ICustomerService files, illustrating their integration with a SOAP web service.

  2. Create a new controller

    To illustrate how to utilize the recently established connected service using SOAP Client. To communicate with the connected service, create a client by referencing the Customer Reference. Indicate the endpoint to be used in the client.
    Code snippet of a C# controller class for a customer service API, incorporating a route and an asynchronous task method for retrieving customer data, designed to seamlessly integrate with a SOAP web service.

  3. Execute the project and perform testing in Swagger.Screenshot of an API testing page for a "Customer" endpoint, displaying parameters and responses. The response includes customer details like ID, first name, last name, and email in JSON format. Although resembling a SOAP web service setup, this showcases the efficiency of RESTful interactions.

Conclusion

Implementing a SOAP service using WSDL in Visual Studio is a straightforward process, and it provides a robust foundation for building interoperable and standardized web services. By following these steps, you can create a SOAP service, define its contract, and seamlessly integrate it into your applications.

Remember to adapt the instructions based on your specific project requirements and the version of Visual Studio you are using.

Keep with us for more tips and tricks about the ASP.NET Core Development concept.

I hope you would like my blog to help provide a robust foundation for building interoperable and standardized web services. You can share this blog via a social button to help other Asp.Net Developers. As We are at Satva Solutions, we provide API integration services in any ASP.NET MVC/Core application.

Happy coding!

Next, read this:

Article by

Jignasha Rathod

Jignasha Rathod is a Technical Analyst with over a decade of experience in the IT industry. She excels in .NET, CI/CD, GitHub, Azure. and has a proven track record in project management, leadership, API integrations, and Azure AI and ML.net . Jignasha is focused on performance enhancement and possesses deep domain expertise in open source CMS ( umbraco, orchard cms ) accounting, CRM, ERP (SAP, NetSuite, Business Central) and e-commerce. Her extensive experience spans across both B2B and B2C e-commerce platforms, and she is leveraging AI and ML technologies to drive innovation and efficiency in client projects.