下面是一份适用于阿里云 Windows ECS IIS ASP.NET Core Vue SQLite的部署手册。假设你的项目是MusicStudy正式访问地址为https://music.example.com服务器内部让 ASP.NET Core 运行在http://127.0.0.1:5080用户只通过 IIS 的80/443端口访问。一、创建并登录阿里云 ECS购买 Windows ECS 后在阿里云控制台进行以下操作云服务器 ECS → 实例 → 找到你的服务器页面右上角点击控制台账号昵称左边进入阿里云控制台总页面点击页面左上角的三条横线菜单按钮☰展开阿里云全产品导航。在产品分类里找到计算分类点击下面的云服务器 ECS即可进入服务器实例管理页面。记录以下信息公网 IPv4 地址实例名称Windows 用户名Windows 登录密码地域和可用区信息你目前的值怎么查看公网 IPv4 地址47.99.168.159实例详情中的“公网 IP”实例名称你贴出的内容未明确列出实例列表中的“实例 ID/名称”列或详情页顶部Windows 用户名阿里云官方 Windows 镜像通常为Administrator使用该用户名登录不是阿里云账号nick9851246746Windows 登录密码页面不会显示现有密码使用创建实例时设置的密码忘记或没设置则点击“重置密码”地域华东1杭州控制台顶部的地域选择器可用区你贴出的内容未列出实例详情“基本信息”中查找“可用区”也可在实例列表调整显示列使用 Windows 自带的远程桌面连接按Win R输入mstsc计算机填写 ECS 公网 IP输入实例的 Windows 用户名和密码登录服务器如果无法连接需要检查阿里云安全组是否开放远程桌面端口3389。二、配置阿里云安全组进入阿里云控制台 → 云服务器 ECS → 实例 → 安全组 → 配置规则添加入方向规则端口协议来源用途3389TCP你的固定公网 IPWindows 远程桌面80TCP0.0.0.0/0HTTP 和证书验证443TCP0.0.0.0/0HTTPS 网站现在正在添加HTTP 80规则。只差填写“访问来源”。按以下方式配置配置项填写内容授权策略允许优先级保持1协议类型Web HTTP流量访问访问来源IPv4IPv4 地址0.0.0.0/0访问目的自动显示HTTP(80)描述MusicStudy HTTP在“访问来源”右侧的空输入框中输入0.0.0.0/0这表示允许所有公网 IPv4 地址访问网站的80端口。输入后红色错误提示应该消失“确定”按钮会变为可点击。点击确定然后再次点击“添加入方向规则”添加 HTTPS配置项填写内容授权策略允许优先级1协议类型右侧快捷配置选择Web HTTPS流量访问访问来源 IPv40.0.0.0/0访问目的自动显示HTTPS(443)描述MusicStudy HTTPS点击“确定”。最终应该增加两条规则允许 TCP 80 来源 0.0.0.0/0 允许 TCP 443 来源 0.0.0.0/080和443是公开网站端口因此来源使用0.0.0.0/0是正常配置。只有远程管理端口3389不建议对所有公网地址开放。不建议开放5080 4173 5173这些端口只应该由服务器内部使用。如果远程桌面只供你自己使用3389的来源最好填写你自己的公网 IP而不是所有地址。三、配置 Windows 防火墙在 ECS 中以管理员身份打开 PowerShellNew-NetFirewallRule -DisplayName MusicStudy HTTP -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow New-NetFirewallRule -DisplayName MusicStudy HTTPS -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow如果你需要从服务器外部测试5080可以临时开放但正式部署不建议这样做New-NetFirewallRule -DisplayName MusicStudy Internal API -Direction Inbound -Protocol TCP -LocalPort 5080 -Action Allow四、准备域名和 DNSHTTPS 正式部署推荐使用域名。“准备域名和 DNS”是为了把目前的网站地址http://47.99.168.159/mapp/变成更容易记忆并且能申请 HTTPS 证书的地址例如https://music.example.com/mapp/域名是什么域名是网站名称例如baidu.com aliyun.com example.com你现在使用的是服务器公网 IP47.99.168.159购买域名后可以让一个域名指向这个 IP。例如你购买example.com可以为音乐网站使用子域名music.example.comDNS 是什么DNS 相当于互联网的地址簿负责把music.example.com转换为47.99.168.159用户在浏览器输入域名后浏览器先通过 DNS 找到 ECS 的公网 IP再访问服务器。完整过程用户访问 music.example.com ↓ DNS 查询 ↓ 获得 47.99.168.159 ↓ 访问 ECS 的 80 或 443 端口 ↓ IIS 返回网站你需要做什么1. 购买域名可以在阿里云控制台进入网站与域名 → 网站与域名你已经进入正确的域名控制台。目前账号实名认证已完成但还需要先创建“实名信息模板”才能购买域名。创建“实名信息模板”后进入注册域名搜索尚未被注册的域名并购买例如yourname.com yourmusic.cn yourmusic.top选好域名后可以点击注册选好后你看到的shiyinvipmusic.com是首年 85 元、以后续费 95 元/年。如果只是学习部署没必要现在购买。你可以按目标选择先验证部署继续用拾音 - 个人音乐库个人音乐管理与播放器学习项目http://47.99.168.159/mapp/暂时不买域名。但公网 HTTP 不适合开放登录密码和 Cookie 传输没有 TLS 保护。长期对外使用购买一个负担得起的域名重点比较续费价而不只是首年价格。.com不是必须其他后缀也可以用于 HTTPS但要先确认是否适合你在杭州 ECS 上办理备案。暂不购买时测试 HTTPS本机可用开发证书测试公网 IP 也可以申请匹配 IP 的受信任证书但签发渠道和配置通常比普通域名证书更麻烦。页面右侧的“15 元建站套餐”是15 元/月的套餐不是花 15 元永久获得域名也不要为了域名误买不需要的建站服务。这边我就使用了一口价的二手域名域名和 ECS 是两项独立资源需要单独购买和续费。2. 实名认证在中国大陆注册和使用域名通常需要完成阿里云账号实名认证域名持有人实名认证具体要求以阿里云控制台提示为准。3. 网站备案你的 ECS 位于华东1杭州属于中国大陆服务器。域名通过公网向外提供网站服务通常需要完成 ICP 备案。没有备案的域名即使配置了解析也可能无法正常通过中国大陆服务器提供 Web 服务。备案需要在阿里云备案系统提交主体信息、网站信息并按流程审核。备案不是 HTTPS 证书而是中国大陆服务器对外提供网站服务的合规要求。4. 添加 DNS 解析假设你购买example.com进入阿里云控制台 → 云解析 DNS → 权威域名解析 → example.com → 解析设置 → 添加记录点击解析设置进入解析设置页面这个弹窗可以直接完成 A 记录配置“业务需求”保持选中将网站域名解析到服务器 IPv4 地址。“请选择网站域名”勾选laptop.fashion它对应主机记录。暂时不用勾选www.laptop.fashion自定义输入框也留空。在“网站的 IP”输入框中填一行47.99.168.159点击确定。完成后应出现一条记录类型 A | 主机记录 | 记录值 47.99.168.159如果也想让www.laptop.fashion可用可以同时勾选它阿里云会额外创建一条www记录。但第一步只配置laptop.fashion最容易检查。保存后在你自己的电脑上执行Resolve-DnsName laptop.fashion -Type A结果包含47.99.168.159就说明 DNS 指向成功。它不会自动配置/mapp、IIS 或 HTTPS这些仍需分别处理。DNS 只能指向 IP 或其他域名不能配置路径和协议。如何对应当前/mapp和/mapiDNS 配置完成后可以直接保持现有路径前端https://music.example.com/mapp/ 后端https://music.example.com/mapi/也可以重新调整 IIS让访问结构更简洁前端https://music.example.com/ 后端https://music.example.com/api/对于正式上线第二种结构更简单但需要调整 IIS 和前端生产配置。如何检查 DNS配置完成后执行Resolve-DnsName music.example.com如果结果显示47.99.168.159说明 DNS 已经指向你的 ECS。不过这只代表“域名找到服务器”。之后仍需要在 IIS 中绑定该域名。为该域名申请 HTTPS 证书。在 IIS 中配置 HTTPS443绑定。确认阿里云安全组和 Windows 防火墙允许443。五、安装 IIS在 Windows ECS 中打开服务器管理器 → 添加角色和功能选择基于角色或基于功能的安装 → Web 服务器IIS建议勾选Web 服务器常见 HTTP 功能默认文档静态内容HTTP 错误管理工具IIS 管理控制台安装完成后在浏览器访问http://ECS公网IP如果出现 IIS 欢迎页说明 IIS 已安装。六、安装 ASP.NET Core Hosting Bundle你的项目使用 ASP.NET Core因此服务器需要安装 Hosting Bundle。在微软官网下载与你项目兼容的ASP.NET Core Hosting Bundle你的项目目前目标框架是net6.0但 .NET 6 已经停止支持。正式部署建议先把项目升级到受支持的 .NET 版本。如果暂时不升级就在服务器上安装对应的 .NET 6 Hosting Bundle。安装完成后以管理员身份执行iisreset检查 ASP.NET Core Module 是否安装成功Get-ChildItem C:\Program Files\IIS\Asp.Net Core Module\V2如果能看到相关文件说明 IIS 托管模块已安装。七、在开发机发布项目在你的开发机上执行前端构建Set-Location D:\自我提升\MusicStudy\web npm run build这一步会把前端构建到src\MusicStudy.Api\wwwroot然后发布后端Set-Location D:\自我提升\MusicStudy dotnet publish .\src\MusicStudy.Api\MusicStudy.Api.csproj -c Release -o .\publish发布目录大致如下publish ├── MusicStudy.Api.dll ├── MusicStudy.Api.exe ├── web.config ├── appsettings.json ├── appsettings.Production.json ├── MusicStudy.Api.deps.json ├── MusicStudy.Api.runtimeconfig.json ├── wwwroot └── 其他依赖文件不要只复制 DLL。应该复制整个publish目录。八、备份数据库和配置文件项目使用 SQLite。部署更新前先备份src\MusicStudy.Api\Data\尤其是数据库文件。在服务器上建议使用C:\Sites\MusicStudy\Backups备份命令示例New-Item -ItemType Directory -Path C:\Sites\MusicStudy\Backups -Force Copy-Item C:\Sites\MusicStudy\Data\music-study.db C:\Sites\MusicStudy\Backups\music-study-$(Get-Date -Format yyyyMMdd-HHmmss).db实际数据库文件名以你的appsettings.json连接字符串为准。九、将文件复制到 ECS在服务器上创建目录New-Item -ItemType Directory -Path C:\Sites\MusicStudy -Force把本地发布目录复制到C:\Sites\MusicStudy建议目录结构C:\Sites\MusicStudy ├── MusicStudy.Api.dll ├── MusicStudy.Api.exe ├── web.config ├── appsettings.json ├── appsettings.Production.json ├── Data ├── wwwroot └── Logs如果已有数据库部署时不要用空数据库覆盖原数据库。十、配置生产环境在C:\Sites\MusicStudy中检查appsettings.Production.json。示例{ ConnectionStrings: { MusicDb: Data SourceData/music-study.db }, Authentication: { CookieSameSite: Lax, CookieSecurePolicy: Always }, Cors: { AllowedOrigins: [ https://music.example.com ] } }如果前后端使用同一个域名通常不需要配置额外的前端后端地址。前端 API 使用相对路径/api/music/search /api/auth/login /api/visitors/track不要在正式前端构建中使用http://localhost:5080因为这会让用户浏览器请求用户自己电脑的5080端口。十一、先用 Kestrel 测试后端在服务器 PowerShell 中执行Set-Location C:\Sites\MusicStudy $env:ASPNETCORE_ENVIRONMENT Production dotnet MusicStudy.Api.dll --urls http://127.0.0.1:5080保持窗口运行然后在服务器本机测试Invoke-WebRequest http://127.0.0.1:5080/api/home如果返回状态码200说明应用本身可以启动。测试推荐接口Invoke-WebRequest http://127.0.0.1:5080/api/music/rank/recommended测试前端Invoke-WebRequest http://127.0.0.1:5080/如果后端启动失败先检查Hosting Bundle 是否安装数据库目录是否存在数据库文件权限appsettings.Production.json是否正确端口5080是否被占用停止测试进程Get-NetTCPConnection -LocalPort 5080 -ErrorAction SilentlyContinue | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force }十二、创建 IIS 应用程序池打开IIS 管理器 → 应用程序池 → 添加应用程序池填写项目值名称MusicStudy.NET CLR 版本无托管代码托管管道模式集成立即启动是ASP.NET Core 在 IIS 中使用自己的运行时因此.NET CLR 版本选择“无托管代码”。十三、创建 IIS 网站在 IIS 管理器中网站 → 添加网站初始先创建 HTTP 绑定项目值网站名称MusicStudy物理路径C:\Sites\MusicStudy类型httpIP 地址全部未分配端口80主机名music.example.com点击确定。然后访问http://music.example.com如果能看到 Vue 页面说明 IIS 已经成功托管前端和 ASP.NET Core 应用。十四、设置目录权限SQLite 需要写入数据库目录ASP.NET Core 也需要读取发布目录。给网站目录添加读取权限icacls C:\Sites\MusicStudy /grant IIS AppPool\MusicStudy:(OI)(CI)(RX) /T给数据目录添加修改权限icacls C:\Sites\MusicStudy\Data /grant IIS AppPool\MusicStudy:(OI)(CI)(M) /T如果项目写日志到Logs也给日志目录添加修改权限New-Item -ItemType Directory -Path C:\Sites\MusicStudy\Logs -Force icacls C:\Sites\MusicStudy\Logs /grant IIS AppPool\MusicStudy:(OI)(CI)(M) /T十五、申请 HTTPS 证书Windows IIS 推荐使用win-acme申请 Let’s Encrypt 免费证书。官网https://www.win-acme.com/点击下载下载后拷贝到服务器解压例如C:\Tools\win-acme以管理员身份打开 PowerShellSet-Location C:\Tools\win-acme .\wacs.exe这个提示说明ECS 上的 IIS 没有配置带域名的站点绑定。当前可能只有*:80:但没有*:80:laptop.fashion建议先在 ECS 的 IIS 中添加域名绑定不要马上选择Manual input。添加 IIS 域名绑定在远程桌面的 ECS 中打开IIS 管理器。左侧展开Sites / 网站找到当前能访问/mapp/的网站可能是Default Web Site或你创建的MusicStudy网站。右侧点击Bindings... / 编辑绑定...点击Add... / 添加...填写配置项值类型httpIP 地址All Unassigned/ 全部未分配端口80主机名laptop.fashionSNIHTTP 不需要点击“确定”再点击“关闭”。如果原来有一个空主机名的http:80绑定可以保留但如果多个网站共用80建议为每个网站设置明确主机名避免请求进入错误的网站。检查访问在 ECS 浏览器或你本机访问http://laptop.fashion/mapp/确认仍然能打开网站。重新运行 win-acme回到 ECS PowerShellSet-Location C:\共享文件夹\win-acme.v2.2.9.1701.x64.pluggable .\wacs.exe选择N这次应该能识别到laptop.fashion:80当前 win-acme 已经成功识别 IIS1: Default Web Site (1 binding)因为你的站点就是Default Web Site在提示处输入1然后按回车Site identifier(s) or to choose all: 1当前只识别到一个绑定1: laptop.fashion (Site 1)在提示处输入A然后按回车Binding identifiers(s) or menu option: AA表示选择该站点的全部绑定。因为这里只有laptop.fashion一个绑定所以这是正确选择。如果后续出现“是否接受默认选项”通常输入y或直接按回车使用默认值。现在需要输入用于证书到期、续期失败和滥用通知的邮箱地址。输入你能正常收邮件的邮箱例如your-emailexample.com然后按回车。如果需要多个邮箱用英文逗号分隔firstexample.com,secondexample.com只填写邮箱地址不要填写姓名、密码或网站地址。建议使用你经常查看的邮箱因为 Let’s Encrypt 可能发送续期失败等重要通知。HTTPS 证书已成功创建并安装。日志确认证书laptop.fashion 验证HTTP-01 成功 IIS HTTPS 绑定*:443:laptop.fashion 证书存储WebHosting 自动续期任务已创建 下次续期2026/11/16第一次验证超时重试后成功说明当前80端口和防火墙已经可以正常完成 Let’s Encrypt 验证。现在在 win-acme 菜单输入Q退出程序然后访问https://laptop.fashion/mapp/浏览器开发者工具中确认页面没有证书警告。API 请求使用 https://laptop.fashion/mapi/...。没有http://混合内容错误。登录和播放功能正常。win-acme renew计划任务仍然存在。另外不要移动或删除C:\共享文件夹\win-acme.v2.2.9.1701.x64.pluggable自动续期任务依赖其中的wacs.exe。若删除或移动该目录续期会失败。申请过程中不要关闭 IIS。十六、检查 IIS HTTPS 绑定完成证书申请后进入IIS 管理器 → 网站 → MusicStudy → 绑定应看到类似配置类型https 端口443 主机名music.example.com SSL 证书music.example.com如果多个网站共用同一台服务器和443端口勾选需要服务器名称指示SNI然后访问https://music.example.com确认浏览器地址栏显示锁定图标。PC端正常访问发现手机端无法访问从提供的信息看手机使用的是4G 移动网络错误是CONNECTION_RESET (-101)这说明连接在到达网页内容之前被重置了问题大概率不在 Vue 页面或/mapp/路由而在手机运营商网络 DNS/IPv6 443 端口 IIS HTTPS 绑定 TLS 握手 服务器防火墙清理浏览器缓存通常不会解决这种错误。最可能原因AAAA/IPv6 配置异常电脑可能走 IPv4手机 4G 可能优先走 IPv6。如果域名存在错误的 IPv6 记录就可能出现电脑可以访问 手机 4G 无法访问在电脑上执行nslookup laptop.fashion nslookup -typeAAAA laptop.fashion确认A 记录47.99.168.159这份结果正常说明A 记录47.99.168.159 AAAA 记录不存在因此错误的 IPv6 记录基本可以排除。这里的服务器: UnKnown Address: fe80::1是你本地路由器的 IPv6 DNS 地址不是laptop.fashion的 IPv6 地址不需要处理。下一步建议在本机继续执行nslookup laptop.fashion 223.5.5.5 nslookup laptop.fashion 114.114.114.114两个结果都应该返回47.99.168.159这两个结果都正常说明公网 DNS 已确认无误laptop.fashion → 47.99.168.159并且阿里云 DNS 和114DNS返回一致因此可以排除A 记录错误DNS 尚未传播DNS 污染导致解析到错误 IP错误的 AAAA 记录。现在问题已经缩小到手机 4G 到服务器的连接过程。然后做两个对比测试手机连接和电脑相同的 Wi-Fi打开https://laptop.fashion/mapp/手机关闭 Wi-Fi重新使用 4G 打开。结果判断Wi-Fi 能访问4G 不能访问优先查 DNS、AAAA、运营商网络路径。Wi-Fi 和 4G 都不能访问优先查服务器、证书、443 端口和 IIS。两种网络都能访问但偶尔失败可能是 DNS 缓存或线路问题。实测发现我的情况属于Wi-Fi 和 4G 都不能访问。手机在 Wi-Fi 和 4G 下都是-101而电脑可以访问那么 DNS 基本已经排除问题更可能在HTTPS/TLS、IIS 绑定、服务器防火墙或手机浏览器兼容性。下一步不要再重复查 DNS直接做这几项。1. 用手机测试 HTTP打开http://laptop.fashion/mapp/结果判断HTTP 也报-101重点查服务器端口、防火墙、IIS。HTTP 能打开但 HTTPS 报-101重点查443、证书、TLS 和 IIS HTTPS 绑定。HTTP 自动跳到 HTTPS 后报错说明 HTTP 正常HTTPS 层有问题。根因已经确定了Non-compliance ICP Filing这不是前端、IIS、证书或 DNS 问题而是阿里云检测到该域名没有完成 ICP 备案拦截了网站访问。你的网站部署在中国大陆 ECS 上使用大陆服务器提供网站服务时域名通常必须完成 ICP 备案。HTTPS 证书不能代替 ICP 备案。这也解释了当前现象电脑有时可以访问可能使用了缓存、不同网络或尚未触发拦截。手机 4G 访问出现-101运营商或阿里云拦截连接。HTTP 页面显示Non-compliance ICP Filing已经直接确认是备案拦截。HTTPS 出现连接重置也可能是拦截发生在 TLS/连接层。解决方案有三个给laptop.fashion办理 ICP 备案在阿里云控制台进入ICP备案 → 备案服务号 → 网站备案进入后点击ECS现在已经确认 ECS 符合备案条件实例也已经被阿里云识别实例 IDi-bp15vd8h0y378rvx1anc 公网 IP47.99.168.159 有效期2026-09-16 至 2027-09-17 免费备案额度0/5其中0/5表示已经使用0个备案额度总共可以免费备案5个网站/App不是没有额度。下一步点击左侧开始ICP备案这是正确的备案入口。你不需要购买“万小智”或付费代办服务。建议选择免费自助备案 → 标准表单 → 开始备案“标准表单”更适合你因为可以明确控制每一项资料和备案类型“万小智备案助手”也可以使用但它只是填写引导工具不会提高备案通过率。进入后按以下方向选择备案类型首次备案 备案主体个人或企业按实际情况选择 网站备案laptop.fashion 接入服务商阿里云 服务器i-bp15vd8h0y378rvx1anc 公网 IP47.99.168.159不要点击开通万小智 AI 建站 授权其他账号备案 付费代办服务因为你的 ECS 已显示免费备案数量0/5说明当前账号有可用的免费备案额度而且 ECS 与备案账号属于同一个账号不需要额外服务码。提交时重点保证域名实名认证主体与备案主体一致网站名称、网站内容真实手机号和邮箱可以正常接收验证备案主体资料与阿里云账号信息一致不要为了通过审核填写虚假网站内容。你现在可以点击标准表单 → 开始备案然后选择“首次备案”开始填写。按要求提交主体、域名、网站负责人和网站信息经过阿里云初审后提交工信部审核。2. 将服务器迁移到中国大陆以外例如香港、新加坡或其他海外地域。这样通常不要求中国大陆 ICP 备案但访问速度、数据合规和服务器成本需要重新评估。3. 使用已经完成备案的域名服务器仍在中国大陆时应使用已备案且备案接入关系正确的域名。备案完成后还需要在阿里云备案系统确认该域名已接入当前 ECS在网站底部显示备案号确保 DNS 仍指向47.99.168.159重新测试https://laptop.fashion/mapp/结论现在不是代码故障而是大陆 ECS 上的域名未完成 ICP 备案导致的访问拦截。十七、配置 HTTP 跳转 HTTPSHTTPS 确认正常后再让 HTTP 自动跳转到 HTTPS。你现在已经能访问https://laptop.fashion/mapp/说明证书和 IIS443绑定已经成功。Program.cs中的配置主要用于自动把http://重定向到https://告诉浏览器以后优先使用 HTTPS防止用户继续通过 HTTP 访问登录和 API在Program.cs中加入var app builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseHsts(); } app.UseHttpsRedirection();并在服务注册部分加入builder.Services.AddHttpsRedirection(options { options.HttpsPort 443; });重新构建和发布Set-Location D:\自我提升\MusicStudy\web npm run build Set-Location D:\自我提升\MusicStudy dotnet publish .\src\MusicStudy.Api\MusicStudy.Api.csproj -c Release -o .\publish然后把新的发布目录复制到C:\Sites\MusicStudy重启 IISiisreset访问http://music.example.com应该自动跳转到https://music.example.com如果站点已经由 IIS 统一处理 HTTPS也可以使用 IIS URL Rewrite 实现跳转但不要让应用和 IIS 形成错误的循环跳转。十八、检查登录 Cookie 和指纹正式 HTTPS 下应该确认MusicStudy.Auth MusicStudy.Visitor具有以下特征HttpOnlySecure合适的SameSite正确的域名和路径打开浏览器开发者工具F12 → Application → Cookies检查https://music.example.com然后访问https://music.example.com/api/visitors/track当前项目的指纹采集要求安全上下文正式 HTTPS 后浏览器的 Web Crypto API 可以正常工作。十九、正式环境验证清单逐项测试[ ] https://music.example.com 可以访问 [ ] http://music.example.com 自动跳转 HTTPS [ ] 浏览器没有证书错误 [ ] 首页正常显示 [ ] 搜索接口正常 [ ] 推荐榜单正常 [ ] 点击推荐歌曲进入播放页 [ ] 播放按钮可以解析音频 [ ] 实时歌词正常 [ ] 登录正常 [ ] 未登录点击收藏会跳转登录页 [ ] 登录成功后能返回原播放页 [ ] 访客 Cookie 正常生成 [ ] 登录后访客记录关联 UserId [ ] 退出后访客状态恢复 [ ] SQLite 数据库可以写入 [ ] IIS 应用程序池没有自动停止 [ ] win-acme 自动续期任务存在检查 IIS 应用程序池Get-WebAppPoolState -Name MusicStudy正常应返回Value : Started检查端口Get-NetTCPConnection -LocalPort 80,443 -State Listen检查证书续期任务Get-ScheduledTask | Where-Object { $_.TaskName -match win-acme|acme }二十、以后更新网站的标准流程每次更新建议按照这个顺序1. 备份数据库Copy-Item C:\Sites\MusicStudy\Data\music-study.db C:\Sites\MusicStudy\Backups\music-study-$(Get-Date -Format yyyyMMdd-HHmmss).db2. 本地构建Set-Location D:\自我提升\MusicStudy\web npm run build Set-Location D:\自我提升\MusicStudy dotnet publish .\src\MusicStudy.Api\MusicStudy.Api.csproj -c Release -o .\publish3. 停止 IIS 网站Stop-Website -Name MusicStudy4. 复制新的发布文件不要删除或覆盖C:\Sites\MusicStudy\Data\music-study.db除非你明确要替换数据库。5. 启动网站Start-Website -Name MusicStudy6. 验证Invoke-WebRequest https://music.example.com/api/home最后在浏览器清理缓存或强制刷新Ctrl F5需要特别注意的几个问题不要让5080对公网开放。IIS 对外提供443ASP.NET Core 只监听127.0.0.1:5080。不要在生产服务器上运行npm run dev。正式环境使用npm run build后的wwwroot。不要用 HTTP 的后端地址构建正式前端。前端 API 应使用相对路径或 HTTPS 地址。SQLite 数据库必须备份。发布目录更新不应覆盖已有数据库。证书需要自动续期。Let’s Encrypt 证书通常有效期较短确认 win-acme 自动续期任务已经创建。当前项目是 .NET 6。它已经停止支持服务器部署完成后建议安排升级到受支持的 .NET 版本。域名解析和 HTTPS 是两件事。DNS 只负责把域名指向 ECS证书和 IIS 绑定才负责 HTTPS。最终结构应该是用户 ↓ https://music.example.com:443 ↓ IIS HTTPS 证书 ↓ ASP.NET Corehttp://127.0.0.1:5080 ↓ SQLiteC:\Sites\MusicStudy\Data\music-study.db