如何将ASP.NET MVC Web应用部署到Web服务器或IIS
最优部署方案说明
针对ASP.NET MVC + MySQL的技术栈、局域网访问场景,优先选择Windows服务器自带的IIS作为托管服务,和.NET生态兼容性最好、配置成本最低、权限管控更灵活,不需要额外安装第三方Web服务。
前置准备
- 服务器端:Windows Server 2016及以上版本,提前开启IIS服务,安装对应版本的*.NET Core Hosting Bundle*(如果是.NET Framework版本的MVC,安装对应版本的.NET Framework运行时即可),如果数据库也部署在当前服务器,提前装好MySQL服务并完成初始化
- 开发端:VSCode安装C#扩展,确保项目本地可正常运行,提前把项目内的数据库连接串修改为服务器端可正常访问的MySQL地址
具体操作步骤
第一步:打包发布ASP.NET MVC项目
在VSCode中打开项目根目录,调出终端执行对应打包命令:
- .NET Framework版本MVC:
msbuild /t:Publish /p:Configuration=Release /p:PublishDir=./publish - .NET Core/.NET 5+版本MVC:
dotnet publish -c Release -o ./publish
命令执行完成后,项目运行所需的所有文件都会输出到publish文件夹,把整个文件夹复制到服务器的指定目录即可(比如C:\webapps\你的项目名)
第二步:创建IIS站点
- 打开服务器的IIS管理器,左侧右键「网站」→「添加网站」
- 自定义填写站点名称,物理路径选择刚才复制到服务器的publish文件夹路径
- 绑定配置:类型选http,IP地址下拉选择服务器的局域网固定IP,端口填写未被占用的端口号(比如8080),主机名留空即可
- 点击确认完成站点创建
第三步:配置应用程序池和权限
- 点击IIS左侧的「应用程序池」,找到刚创建站点对应的应用池,右键「基本设置」
- 如果是.NET Framework版本MVC,.NET CLR版本选择「v4.0.30319」;如果是.NET Core/.NET 5+版本,选择「无托管代码」,托管模式选择集成
- 右键应用池→「高级设置」,找到「标识」选项,修改为「LocalSystem」,避免权限不足无法读取文件或访问数据库
- 找到服务器上存放publish文件夹的上级目录,右键「属性」→「安全」,添加IIS_IUSRS用户,授予读取和执行权限
第四步:配置数据库访问
- 如果MySQL部署在当前Web服务器,连接串直接写
server=localhost;database=你的库名;user=你的MySQL账号;password=你的MySQL密码;即可 - 如果MySQL部署在其他服务器,确保Web服务器能正常ping通数据库地址,连接串填写数据库的局域网IP,同时给对应MySQL账号开启Web服务器IP的访问权限
第五步:测试局域网访问
- 先在服务器本地打开浏览器,输入
http://127.0.0.1:你设置的端口,确认站点可以正常访问 - 打开服务器防火墙,添加入站规则,开放你设置的站点端口允许局域网访问
- 局域网内其他设备打开浏览器,输入
http://服务器局域网IP:端口即可正常访问应用
常见问题排查
- 访问报502.5错误:大概率是未安装对应版本的.NET运行时或Hosting Bundle,重新安装对应版本后重启IIS即可
- 访问报403权限错误:检查站点目录是否给IIS_IUSRS用户授予了读取权限,或者应用池标识是否已修改为LocalSystem
- 数据库连接失败:检查连接串配置是否正确,MySQL服务是否正常运行,对应账号是否开通了Web服务器IP的访问权限
内容的提问来源于stack exchange,提问作者michi
相关产品推荐
相关产品推荐

