ASP.NET Core WebApi+React UI开发入门详解

server/2025/4/1 7:07:10/

在前段时间,有粉丝反馈能否写一篇基于ASP.NET Core Web Api+React UI进行Web开发的文章,经过查阅相关资料,发现Visual Studio 2022已经集成相关模板,可以在Visual Studio中直接创建项目项目,今天以一个小例子,简述ASP.NET Core Web Api+React UI开发系统的基本步骤,仅供学习分享使用,如有不足之处,还请指正。

开发环境

创建和开发基于ASP.NET Core Web Api+React UI的前后端分离项目,需要的环境如下:

开发环境:Visual Studio 2022 最低支持版本为17.11或更高版本。在Visual Studio 中,点击“帮助”菜单,然后点击“关于Microsoft Visual Studio”,可以查看已安装的版本。

小编电脑上的Visual Studio 2022版本为v17.13.2,如下所示:

安装Visual Studio 2022时,需要安装“ASP.NET 和Web开发”,以及“Web部署”模块,如果没有安装,可以通过Visual Studio中“工具”菜单,然后点击“获取工具和功能”进行查看,如下所示:

Web部署组件

NPM环境,NPM的全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。由于基于React UI的前端项目,是通过NPM创建模板项目,所以需要NPM的支持。在命令行中,可以通过npm -v 查看当前版本,如果使用npm -v 提示不存在的命令,则表示没有安装npm,可以通过安装node.js进行安装。小编的npm当前版本为10.7.0,node.js的版本为v22.2.0。如下所示:

项目创建

选择项目模板,在创建项目向导中,搜索React关键字,然后选择“React and ASP.NET Core”模板,搜索出来的两个分别是基于TypeScript和JavaScript,均可以创建,如下所示:

配置项目,输入解决方案名称,如“OneReactApp”,以及项目存储的位置。如下所示:

选择框架,目前只有“.NET 8.0”支持此项目的创建,其他选择默认即可,如下所示:

创建项目,在上述步骤中,配置完信息,点击“创建”即可创建项目。Visual Studio会默认创建两个项目,分为客户端和服务端。客户端基于React UI进行开发,服务端基于ASP.NET Core Web Api进行开发,如下所示:

在项目创建过程中,并不一定会顺利,如果报以下错误“Unsupported engine for tmp@0.2.3:wanted:{node:>=14.4 }”等信息,则表示node版本太低,需要升级。

如果提示“Syntax Error:Unexpected token ?”等语法错误,是因为可选链操作符需要在 Node.js 的较新版本中才支持。如果你使用的是 Node.js 的一个旧版本,它将无法识别 ? 符号。建议升级Node.js到最新版本。

设置项目属性

选择服务端项目【OneReactApp.Server】,右键“属性”打开属性页面,在“调试”选项卡,点击“打开调试启动配置文件 UI”打开“启动配置文件”窗口,如下所示:

在“启动配置文件”窗口,选择Https选项卡,在启动浏览器,取消勾选“指示在调试项目时应自动启动web浏览器”,如下所示:

配置启动项,选择解决方案,在右键菜单中,选择“配置启动项”打开“解决方案属性页”,选择“多个启动项目(M)”,然后将客户端和服务端项目都设置为启动,然后点击“应用”按钮。如下所示:

启动项目

在Visual Studio 开发工具中,点击“启动”按钮或快捷键“F5”启动调试。如下所示:

第一次启动项目,需要先还原客户端需要的库,此操作是通过npm命令在线执行,可能需要几分钟,如下所示:

程序运行后,会出现两个命令提示符,Vite Cli表示React UI客户端项目是通过VITE启动的,如下所示:

另外一个窗口是“正在运行的 ASP.NET Core API 项目”,表示服务端运行窗口。如下所示:

在上述启动的两个窗口中,可以看到默认的客户端端口为53017,服务端端口为7061。

正常启动后,可在默认浏览器里看到一个“Weather forecast”页面,这是Visual Studio 2022项目创建模板自带的页面,即表示运行成功,如下所示:

发布项目

ASP.NET Core WebAPI+React UI前后端分离的项目,发布步骤如下:

1. 在服务端添加对客户端的引用,首先在解决方案管理器中,选择服务端项目,在右键菜单中,选择“添加”,在子菜单中选择“项目引用”或者在“依赖项”点击右键,在弹出菜单中选择“添加项目引用”,打开“引用管理器”,选择客户端项目“onereactapp.client”,然后点击“确定”即可,如下图所示:

添加成功后,即可在“依赖项”项目中看到对客户端的引用,如下所示:

2. 编辑项目文件,在服务端项目上点击右键,在弹出的右键菜单中选择“编辑项目文件”,打开项目文件,请确保项目引用包含一个 <ReferenceOutputAssembly> 元素,其值设置为 false。如下所示:

3. 确保Program.cs文件中存在如下代码

然后选择服务端项目“OneReactApp.Server”右键菜单点击“发布”,然后选择发布方案,如“文件夹”,如下所示:

然后点击“下一步”,选择目标发布的位置,默认为“bin\Release\net8.0\publish\”,如下所示:

然后点击“完成”,创建项目发布文件,然后点击“关闭”,如下所示:

然后点击“发布”按钮,如下所示:

发布成功后,如下所示:

在“输出”窗口,也可以看到发布过程中输出的信息,如下所示:

发布成功,在文件夹里面,可以看到发布后的结果文件,如下所示:

双击“OneReactApp.Server.exe”,提示缺少“wwwroot”目录,静态文件可能会不可用,如下所示:

后来经过分析,发现客户端采用npm run build命令进行构建,在构建后,会在dist目录下生成静态文件,所以在服务端发布目录下,创建wwwroot目录,并将dist目录下的文件拷贝过来即可。

onereactapp.client\dist目录下的静态文件,如下所示:

复制到服务端发布目录下的文件结构,如下所示:

再次双击“OneReactApp.Server.exe”后,显示运行正常,如下所示:

然后在浏览器中输入配置的http://localhost:5000即可访问,与在Visual Studio 2022中调试状态下输出内容一样,则表示发布成功,如下所示:

以上就是《ASP.NET Core WebApi+React UI开发入门详解》的全部内容,希望可以抛砖引玉,一起学习,共同进步。


http://www.ppmy.cn/server/179310.html

相关文章

# 03_Elastic Stack 从入门到实践(三)--- 1

03_Elastic Stack 从入门到实践(三)— 1 一、Elasticsearch核心讲解之批量操作 1、Elasticsearch批量操作:批量查询。 有些情况下,可以通过批量操作以减少网络请求。如:批量查询、批量插入数据等。 # 批量查询:post /haoke/user/_mget# 打开 Postman 软件,地址栏输…

debug - 安装.msi时,为所有用户安装程序

文章目录 debug - 安装.msi时&#xff0c;为所有用户安装程序概述笔记试试在目标.msi后面直接加参数的测试 备注备注END debug - 安装.msi时&#xff0c;为所有用户安装程序 概述 为了测试&#xff0c;装了一个test.msi. 安装时&#xff0c;只有安装路径的选择&#xff0c;没…

Vite管理的Vue3项目中monaco editer的使用以及组件封装

文章目录 背景环境说明安装流程以及组件封装引入依赖封装组件 外部使用实现效果 v-model实现原理 背景 做oj系统的时候,需要使用代码编辑器,决定使用Monaco Editor&#xff0c;但是因为自身能力问题&#xff0c;读不懂官网文档&#xff0c;最终结合ai和网友的帖子成功引入&…

常⻅框架漏洞--ThinkPHP

Thinkphp5x远程命令执⾏及getshell 环境搭建 cd vulhub/thinkphp/5-rce docker-compose up -d #启动环境 访问网址 漏洞利⽤ ?s/Index/\think\app/invokefunction&functioncall_user_func_array&vars[0]phpinfo&vars[1][]-1 ? sindex/think\app/invokefunctio…

(UI自动化测试web端)第二篇:元素定位的方法_css定位ID选择器

看代码里的【find_element_by_css_selector( )】( )里的表达式怎么写&#xff1f; 文章介绍了第一种写法id选择器&#xff0c;其实XPath元素定位要比CSS好用&#xff0c;原因是CSS无法使用下标&#xff08;工作当中也是常用的xpath&#xff09;&#xff0c;但CSS定位速度比XPat…

Python与区块链隐私保护技术:如何在去中心化世界中保障数据安全

Python与区块链隐私保护技术:如何在去中心化世界中保障数据安全 在区块链世界里,透明性和不可篡改性是两大核心优势,但这也带来了一个悖论——如何在公开账本的同时保障用户隐私?如果你的交易记录对所有人可见,如何防止敏感信息泄露? Python 作为区块链开发中最受欢迎的…

Bash 脚本基础

一、Bash 脚本基础 什么是 Bash 脚本&#xff1a;Bash 脚本是一种文本文件&#xff0c;其中包含了一系列的命令&#xff0c;这些命令可以被 Bash shell 执行。它用于自动化重复性的任务&#xff0c;提高工作效率。 Bash 脚本的基本结构&#xff1a;以 #!/bin/bash 开头&#x…

分类——数学公式推导全过程

文章目录 一、引入案例 二、准备知识 1. 内积 2. 感知机 3. 权重向量的更新表达式 4. 线性可分 三、 逻辑回归 1&#xff09;sigmoid 函数 2&#xff09;决策边界 3&#xff09;似然函数 4&#xff09;对数似然函数 5&#xff09;线性不可分 一、引入案例 根据尺寸…