This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can trysigning in orchanging directories.
Access to this page requires authorization. You can trychanging directories.
In this article, you learn how to build an ASP.NET Core project to act as an API backend and a React project to act as the UI.
Currently, Visual Studio includes ASP.NET Core Single Page Application (SPA) templates that support Angular and React. The templates provide a built-in Client App folder in your ASP.NET Core projects that contains the base files and folders of each framework.
You can use the method described in this article to create ASP.NET Core Single Page Applications that:
Note
This article describes the project creation process using the updated template in Visual Studio 2022 version 17.11, which uses the Vite CLI. Vite determines the version of React using project dependencies, such as those configured inpackage.json.
https://www.npmjs.com/
), which is included with Node.jsIn the Start window, selectCreate a new project.
Search for React in the search bar at the top and then selectReact and ASP.NET Core. This template is a JavaScript template.
Name the projectReactWithASP and then selectNext.
In the Additional Information dialog, make sure thatConfigure for HTTPS is enabled. In most scenarios, leave the other settings at the default values.
SelectCreate.
Solution Explorer shows the following project information:
Compared to thestandalone React template, you see some new and modified files for integration with ASP.NET Core:
Select an installed browser from the Debug toolbar, such as Chrome or Microsoft Edge.
If the browser you want is not yet installed, install the browser first, and then select it.
In Solution Explorer, right-click theReactWithASP.Server project and chooseProperties.
In the Properties page, open theDebug tab and selectOpen debug launch profiles UI option. Uncheck theLaunch Browser option for thehttps profile or the profile named after the ASP.NET Core project, if present.
This value prevents opening the web page with the source weather data.
Note
In Visual Studio,launch.json
stores the startup settings associated with theStart button in the Debug toolbar. Currently,launch.json
must be located under the.vscode
folder.
Right-click the solution in Solution Explorer and selectProperties. Verify that the Startup project settings are set toMultiple projects, and that the Action for both projects is set toStart.
PressF5 or select theStart button at the top of the window to start the app. Two command prompts appear:
The ASP.NET Core API project running
The Vite CLI showing a message such asVITE v4.4.9 ready in 780 ms
Note
Check console output for messages. For example, there might be a message to update Node.js.
The React app appears and is populated via the API (the localhost port may vary from the screenshot).
If you don't see the weather forecast data in the browser, seeTroubleshooting.
In Solution Explorer, right-click theReactWithASP.Server project and selectAdd >Project Reference.
Make sure thereactwithasp.client project is selected.
ChooseOK.
Right-click the ASP.NET Core project again and selectEdit Project File.
This opens the.csproj
file for the project.
In the.csproj
file, make sure the project reference includes a<ReferenceOutputAssembly>
element with the value set tofalse
.
This reference should look like the following.
<ProjectReference Include="..\reactwithasp.client\reactwithasp.client.esproj"> <ReferenceOutputAssembly>false</ReferenceOutputAssembly> </ProjectReference>
Right-click the ASP.NET Core project and chooseReload Project if that option is available.
InProgram.cs, make sure the following code is present.
app.UseDefaultFiles();app.UseStaticFiles();// Configure the HTTP request pipeline.if (app.Environment.IsDevelopment()){ app.UseSwagger(); app.UseSwaggerUI();}
To publish, right click the ASP.NET Core project, choosePublish, and select options to match your desired publish scenario, such as Azure, publish to a folder, etc.
The publish process takes more time than it does for just an ASP.NET Core project, since thenpm run build
command gets invoked when publishing. TheBuildCommand runsnpm run build
by default.
If you publish to a folder, seeASP.NET Core directory structure for more information on the files added to thepublish folder.
You may see the following error:
[HPM] Error occurred while trying to proxy request /weatherforecast from localhost:4200 to https://localhost:7183 (ECONNREFUSED) (https://nodejs.org/api/errors.html#errors_common_system_errors)
If you see this issue, most likely the frontend started before the backend.
If the weather data doesn't load correctly, you may also need to verify that your ports are correct.
Make sure that the port numbers match. Go to thelaunchSettings.json
file in the ASP.NET CoreReactWithASP.Server project (in theProperties folder). Get the port number from theapplicationUrl
property.
If there are multipleapplicationUrl
properties, look for one using anhttps
endpoint. It looks similar tohttps://localhost:7183
.
Open thevite.config.js
file for the React project. Update thetarget
property to match theapplicationUrl
property inlaunchSettings.json. The updated value looks similar to the following:
target: 'https://localhost:7183/',
You may see the following certificate error:
Your connection isn't private
Try deleting the React certificates from%appdata%\local\asp.net\https or%appdata%\roaming\asp.net\https, and then retry.
If you create the project withDocker support enabled, take the following steps:
After the app loads, get the Docker HTTPS port using theContainers window in Visual Studio. Check theEnvironment orPorts tab.
Note
If you do not see the environment nameASPNETCORE_HTTPS_PORT
, add it manually using thelaunchSettings.json file. In the sectionContainer (Dockerfile)
and after the entry"useSSL": true
, add"sslPort": <any port>
. In this example, use the following:"sslPort": 44307
Open thevite.config.js
file for the React project. Update thetarget
variable to match the HTTPS port in the Containers window. For example, in the following code:
const target = env.ASPNETCORE_HTTPS_PORT ? `https://localhost:${env.ASPNETCORE_HTTPS_PORT}` : env.ASPNETCORE_URLS ? env.ASPNETCORE_URLS.split(';')[0] : 'https://localhost:7143';
changehttps://localhost:7143
to the matching HTTPS port (in this example,https://localhost:44307
).
Restart the app.
For more information about SPA applications in ASP.NET Core, see the React section underDeveloping Single Page Apps. The linked article provides additional context for project files such asaspnetcore-https.js, although details of the implementation are different based on the template differences. For example, instead of a ClientApp folder, the React files are contained in a separate project.
For MSBuild information specific to the client project, seeMSBuild properties for JSPS.
Was this page helpful?
Need help with this topic?
Want to try using Ask Learn to clarify or guide you through this topic?
Was this page helpful?
Need help with this topic?
Want to try using Ask Learn to clarify or guide you through this topic?