如何在IIS部署Angular 13应用与.NET Core Api?含自部署等方案咨询
Angular 13 + .NET 7 API 部署指南
一、IIS部署方案
(一)部署Angular 13应用
- 打包生产代码:在VS Code终端进入Angular项目根目录,执行
ng build --prod,打包完成后会生成dist/[你的项目名]文件夹,里面是全部静态资源文件。 - IIS站点配置:
- 打开IIS管理器,右键左侧「网站」→「添加网站」
- 填写站点名称,物理路径选择刚才生成的
dist/[你的项目名]文件夹,设置端口(比如8080),主机名按需填写 - 解决路由刷新404问题:在站点根目录新建
web.config文件,粘贴以下内容:<configuration> <system.webServer> <rewrite> <rules> <rule name="Angular Routes" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="/" /> </rule> </rules> </rewrite> </system.webServer> </configuration> - 确认IIS已安装URL重写模块,如果没装,去服务器管理器的「角色和功能」里添加。
(二)部署.NET 7 API
- 发布API项目:
- 在VS 2022里打开API项目,右键项目→「发布」,选择「文件夹」作为目标,设置发布路径(比如
D:\Publish\MyApi)后点击「发布」 - 也可以用命令行发布:在项目根目录执行
dotnet publish -c Release -o D:\Publish\MyApi
- 在VS 2022里打开API项目,右键项目→「发布」,选择「文件夹」作为目标,设置发布路径(比如
- IIS站点配置:
- 先确保服务器安装了**.NET Core Hosting Bundle**(包含.NET 7运行时和IIS托管模块),没装的话下载对应版本安装
- 打开IIS管理器添加新网站,站点名称自定义,物理路径选刚才的发布文件夹,端口设为和Angular不同的(比如8081)
- 配置应用程序池:找到该站点对应的应用程序池,将「.NET CLR版本」设为
无托管代码 - 测试:访问
http://localhost:8081/[你的接口路径],确认API能正常返回数据
二、其他部署方式
(一)自托管部署(无需IIS)
- Angular应用:用静态文件服务器托管,先全局安装
http-server:npm install -g http-server,进入dist/[你的项目名]文件夹,执行http-server -p 8080就能启动服务,访问http://localhost:8080即可打开应用。 - .NET API:发布完成后,进入发布文件夹的终端,执行
dotnet [你的API项目名].dll,API会自动自托管运行(默认监听http://localhost:5000和https://localhost:5001)。如果要自定义端口,修改appsettings.json里的Urls配置:"Urls": "http://*:8081;https://*:8082"
(二)Docker容器部署
- Angular:编写Dockerfile,基于nginx镜像,把打包后的静态文件复制到nginx的
/usr/share/nginx/html目录,同时配置nginx的路由规则解决刷新404问题。 - .NET API:编写Dockerfile,基于
mcr.microsoft.com/dotnet/aspnet:7.0镜像,复制发布后的文件,暴露对应端口。最后用docker-compose编排两个容器,一键启动整个应用栈。
(三)云平台托管部署
直接用Azure App Service、阿里云ECS、腾讯云Serverless这类云平台,上传发布包或者绑定Git仓库实现自动部署,平台会提供现成的托管环境,不用自己维护服务器配置。
内容的提问来源于stack exchange,提问作者Trilok
相关产品推荐
相关产品推荐

