使用Rider+Cyberduck发布.NET Core网站后显示文件目录问题
解决.NET Core网站发布后显示文件列表的问题
可能原因及修复步骤
1. 确认文件上传到正确的网站根目录
- 虚拟主机通常要求网站文件上传到根目录(如
public_html、wwwroot或主机商指定的专属网站文件夹),而非子目录。检查Cyberduck中传输的文件是否放置在主机要求的根目录下,避免因文件存放在子文件夹导致主机无法识别网站入口。
2. 验证虚拟主机的.NET Core支持状态
- 联系主机服务商确认你的套餐支持.NET Core运行环境,且已在主机控制面板(如cPanel、Plesk)中启用对应版本的.NET Core运行时。
- 部分主机需手动将网站应用程序池设置为.NET Core专用,或在控制面板中指定.NET Core应用的启动命令。
3. 配置默认文档优先级
- 确保网站根目录包含正确的默认入口文件(如
index.html、default.cshtml,或对应.NET Core项目的启动页)。 - 在主机控制面板的网站设置中,将.NET Core项目的启动页面(如
Home/Index对应的入口)添加到默认文档列表的最顶端,让主机优先加载该页面而非显示目录列表。
4. 禁用目录浏览功能
- 登录主机控制面板,找到网站的“目录浏览”设置选项并禁用该功能。禁用后,当主机未找到默认文档时,会返回403错误或引导至正确的网站入口,而非展示文件列表。
5. 检查发布包完整性
- 确认发布的文件包含完整的.NET Core部署文件:
web.config(Windows主机)、项目程序集.dll、appsettings.json等。若为自部署模式,需确保主机已安装对应版本的.NET Core Runtime。 - 本地测试发布包:运行
dotnet YourProject.dll替换为实际项目程序集名称,确认网站能正常启动,排除发布包本身的问题。
6. 核对web.config配置(Windows主机)
- 确保
web.config中的aspNetCore节点配置正确,指向项目的启动程序集:
<aspNetCore processPath="dotnet" arguments=".\YourProject.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
内容的提问来源于stack exchange,提问作者danlon
相关产品推荐
相关产品推荐

