如何将带数据库的ASP.NET MVC应用部署托管到cPanel平台?
基础概念澄清
- 发布(Publish):将你写的源代码编译、打包为可直接在生产环境运行的静态文件、程序集、配置文件的过程,你之前用FileSystem方式生成的所有文件就属于发布产物。
- 托管(Host):把发布好的产物放到公网可访问的服务器上,配置对应的运行环境、绑定域名,让外部用户可以通过公网地址访问服务的过程,是发布的后续步骤。
部署到cPanel的完整操作步骤
前置检查
首先确认你的cPanel主机类型:
- 如果你的项目是基于
.NET Framework开发的ASP.NET MVC,需要使用Windows版cPanel主机,Linux版cPanel默认不支持.NET Framework运行 - 如果你的项目是基于
.NET Core/.NET 5+开发的跨平台ASP.NET MVC,Windows/Linux版cPanel只要开启了.NET运行环境支持都可以使用
步骤1:迁移本地LocalDB数据库到cPanel
- 打开SQL Server Management Studio,连接到本地数据库
(localdb)\ProjectsV13 - 右键你的项目数据库 -> 选择「任务」->「生成脚本」,导出时务必选择「架构和数据」选项,确保包含Admin账号对应的用户表数据
- 登录cPanel,找到「MSSQL数据库」功能:
- 新建一个数据库,记下数据库名
- 新建一个数据库用户,设置密码,记下用户名和密码
- 给刚创建的用户分配该数据库的全部操作权限
- 进入数据库的SQL执行工具,导入你刚才生成的全量SQL脚本,完成数据迁移
- 记下cPanel给出的MSSQL数据库服务器地址,后续改配置需要用到
步骤2:修改项目配置重新发布
- 打开你项目根目录的
Web.config文件,找到Entity Framework对应的连接字符串节点,将原有LocalDB的连接内容替换为cPanel的数据库连接信息,参考格式如下:
<add name="你的EF上下文名称" connectionString="Data Source= cPanel给的数据库服务器地址;Initial Catalog=你创建的数据库名;User ID=你创建的数据库用户名;Password=数据库密码;Integrated Security=False;" providerName="System.Data.SqlClient" />
- 确认身份验证相关配置没有硬编码本地路径,Admin账号的校验逻辑只要是读取数据库数据的,不需要额外修改
- 重新在VS中用FileSystem方式发布项目,拿到最新的发布产物包
步骤3:上传文件到cPanel并配置运行
- 登录cPanel打开「文件管理器」,进入你要绑定的站点对应的根目录(通常是
public_html,子域名的话是你自定义绑定的目录) - 将发布包内的所有文件全部上传到该根目录
- 配置运行环境:
- Windows版cPanel:找到「IIS管理」功能,确认站点的应用程序池.NET版本和你开发时使用的.NET Framework版本一致,默认文档列表中添加你项目的起始页(比如
index.cshtml、default.aspx) - Linux版cPanel:找到「.NET Core应用」设置,指定发布包中的项目dll路径,设置运行端口,绑定对应域名
- Windows版cPanel:找到「IIS管理」功能,确认站点的应用程序池.NET版本和你开发时使用的.NET Framework版本一致,默认文档列表中添加你项目的起始页(比如
验证效果
配置完成后等待2-5分钟,直接用绑定的域名访问站点,测试公开页面能否正常打开,再用用户名Admin、密码admin登录后台,确认所有数据和本地运行时一致即可。如果出现报错,可临时修改Web.config关闭自定义错误,查看具体报错信息排查问题。
内容的提问来源于stack exchange,提问作者MareZen
相关产品推荐
相关产品推荐

