Asp net core serve both api and spa from the same port


ASP.NET is a popular programming language used for building web applications. One common requirement in web development is to serve both API (Application Programming ) and SPA (Single Page Application) from the same port. In this article, we will explore how to this using ASP.NET Core.

Setting up the ASP.NET Core

To get started, let's create a new ASP.NET Core project. Open your preferred development environment and create a new ASP.NET Core project. You can use the following command in the terminal:

dotnet new webapi -n MyProject

This command will create a new ASP.NET Core project with the name “MyProject”.

Configuring the Startup Class

The next step is to configure the Startup class to serve both API and SPA from the same port. Open the Startup.cs file in your project and locate the Configure method. Modify the method as follows:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    // Other middleware 


    app.(endpoints =>

        endpoints.MapFallbackToController("Index", "Home");

In the above code, we have added a new endpoint using the MapFallbackToController method. This method maps any request that doesn't match an existing endpoint to a specific controller and action. In this case, we are mapping it to the “Index” action of the “Home” controller.

Creating the Home Controller and Index Action

Now, let's create the Home controller and the Index action. Right-click on the Controllers folder in your project and “Add” -> “Controller”. Choose the “MVC Controller – Empty” template and name it “HomeController”.

Open the HomeController.cs file and add the following code:

using Microsoft.AspNetCore.Mvc;

namespace MyProject.Controllers
    public class HomeController : Controller
        public IActionResult Index()
            return View();

In the above code, we have created a simple HomeController with an Index action that returns a view. This view will be used to serve the SPA.

Creating the SPA

Next, let's create the Single Page Application (SPA) that will be served from the same port. You can use any front-end framework of your , such as React, Angular, or Vue.js.

Create a new folder in your project called “ClientApp” (or any name you prefer) and navigate to that folder in the terminal. Use the following command to create a new React application:

npx create-react-app my-spa

This command will create a new React application in the “my-spa” folder.

Configuring the SPA to Use the API

Now that we have created the SPA, we need to configure it to use the API endpoints provided by the ASP.NET Core project.

Open the “my-spa/src/App.js” file and add the following code:

import React, { useEffect, useState } from 'react';

function App() {
  const [data, setData] = useState([]);

  useEffect(() => {
      .then( => response.json())
      .then(data => setData(data));
  }, []);

  return (
{ => (


); } export default App;

In the above code, we are using the fetch API to make a GET request to the “/api/sample” endpoint. The response is then converted to JSON and in the “data” state variable. We are then rendering the data in the component.

Running the Application

Now that we have configured both the API and the SPA, we can run the application and see it in action. Use the following command in the terminal to start the ASP.NET Core project:

dotnet run

This command will start the ASP.NET Core project and make it available at a specific port (e.g., http://localhost:5000).

To start the React application, navigate to the “my-spa” folder in the terminal and use the following command:

npm start

This command will start the React development server and make the SPA available at a different port (e.g., http://localhost:3000).


In this article, we have explored how to serve both API and SPA from the same port using ASP.NET Core. We have seen how to configure the Startup class, create the necessary controllers and actions, and integrate a front-end framework like React. By following these steps, you can build web applications that combine the power of APIs and SPAs seamlessly.

Rate this post

Leave a Reply

Your email address will not be published. Required fields are marked *

Table of Contents