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

devtools/2025/3/30 0:13:36/

在前段时间,有粉丝反馈能否写一篇基于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/devtools/171461.html

相关文章

YOLO11改进-模块-引入跨尺度选择性融合模块CSFblock 解决不同分辨率特征融合的问题

在处理乳腺癌组织病理图像时&#xff0c;现有方法在特征提取和融合方面存在不足。一方面&#xff0c;许多单超分辨率方法只有固定的感受野&#xff0c;难以捕捉多尺度特征&#xff0c;无法很好地解决不同放大倍数下低分辨率图像带来的问题。另一方面&#xff0c;在图像分类任务…

智能汽车图像及视频处理方案,支持视频星轨拍摄能力

美摄科技作为智能汽车图像及视频处理领域的先行者&#xff0c;正以革新性的技术引领着行业的未来发展。美摄科技智能汽车图像及视频处理方案&#xff0c;一个集高效性、智能化、画质增强于一体的创新解决方案&#xff0c;旨在重塑智能汽车图像画质的新标准&#xff0c;并支持前…

游戏引擎学习第175天

回顾和今天的计划 今天的主要任务是完成稀疏 Unicode 支持。之前我们已经完成了所有的思考和设计工作&#xff0c;但代码部分尚未完成&#xff0c;因为有许多内容需要调整和重构。因此&#xff0c;今天的目标就是把这些内容全部整理好并最终实现。 回顾当前测试资源构建器的状…

RAG优化:python从零实现[吃一堑长一智]循环反馈Feedback

本文将介绍一种有反馈循环机制的RAG系统,让当AI学会"吃一堑长一智",给传统RAG装了个"后悔"系统,让AI能记住哪些回答被用户点赞/拍砖,从此告别金鱼记忆: 每次回答都像在玩roguelike:失败结局会强化下次冒险悄悄把优质问答变成新知识卡牌,实现"以…

Linux(Ubuntu)系统安装Docker与Docker Compose完整指南

本文是为需要在Ubuntu系统部署容器服务的开发者准备的详细教程。我们将分两个主要部分讲解&#xff1a;Docker引擎的标准安装流程和Docker Compose的配置方法。所有操作均在终端执行&#xff0c;建议使用Ubuntu 18.04及以上版本。 一、Docker引擎安装全流程 &#xff08;总耗时…

缓存相关问题

目录 缓存常见问题 缓存穿透 问题概述 解决方案 对请求增加校验机制 缓存空值或特殊值 使用布隆过滤器 缓存击穿 问题概述 解决方案 使用锁 热点数据永不过期 缓存预热 热点数据查询降级处理 缓存雪崩 问题概述 解决方案 对同一类型的key设置不同过期时间 缓…

如何使用AIOps明确Devps的问题归责

引言 拿出一个确凿的证据往往是解决背锅问题的重要办法。只有这样&#xff0c;才能够在没有互相指责、逃避责任或为自己及团队开脱等不良闹剧的情况下达成共识。DevOps 团队可以借助 AIOps 数据支持的可信度&#xff0c;让问题更清晰、背景更明确&#xff0c;从而一致做出更好…

rabbitmq承接MES客户端服务器

文章目录 背景整体架构概述方案详细步骤1. 数据库选型与搭建2. 设备端数据上传至数据库3. 搭建 RabbitMQ 服务器4. 数据同步模块&#xff08;数据库到 RabbitMQ&#xff09;5. MES 服务器从 RabbitMQ 接收数据6. 指令接收模块&#xff08;RabbitMQ 到设备端&#xff09; 7. MES…