从Visual Studio发布ASP.NET网站后遇403禁止错误,求排查方案
问题排查与解决方案
核心原因分析
- 服务器不支持ASP.NET Razor页面解析:直接上传
.cshtml源文件到普通FTP服务器,这类服务器默认仅能处理静态文件(如.html/.css/.js),无法解析需要ASP.NET运行时处理的.cshtml文件(包含Razor语法、后端逻辑),这是导致「禁止访问」或页面异常的主要原因。 - 默认页面配置未同步到服务器:本地VS2022中设置
Home.cshtml为启动页,但服务器端未同步配置该文件为默认文档,且服务器本身不识别.cshtml作为可执行的默认页类型。 - 部署流程错误:通过VS Code直接上传项目源文件,而非使用Visual Studio的发布功能生成编译后的部署包,ASP.NET项目需要编译后将部署文件(而非源文件)上传到服务器,直接传
.cshtml源文件不符合部署规范。
正确部署步骤
- 使用Visual Studio生成部署包
在VS2022中右键项目 → 选择「发布」,按照向导选择文件夹发布,生成完整的部署包(包含编译后的.dll、wwwroot、web.config等文件,而非.cshtml源文件)。 - 确认服务器ASP.NET环境支持
联系服务器提供商,确认主机支持对应版本的ASP.NET(如ASP.NET Core或ASP.NET Framework),并已配置好运行环境。 - 上传部署包到服务器根目录
将发布生成的所有文件(非项目源文件)通过FTP上传到服务器指定的网站根目录(确认是否为public.html文件夹)。 - 配置服务器默认启动项
- 若为ASP.NET Framework:在服务器网站配置中添加
Home.cshtml到默认文档列表,或在web.config中配置默认文档节点。 - 若为ASP.NET Core:在
Program.cs中通过app.MapRazorPages();配置路由,并设置默认页路由(如@page ""标记在Home.cshtml顶部)。
- 若为ASP.NET Framework:在服务器网站配置中添加
扩展名修改的问题说明
修改.cshtml为.html会完全丢失Razor语法的解析能力,Shared文件夹中的布局页依赖Razor的布局引用逻辑,自然无法正常工作,这确实不是合理解决方案,只有通过标准的ASP.NET部署流程才能彻底解决问题。
内容的提问来源于stack exchange,提问作者Jordi Schoetens
相关产品推荐
相关产品推荐

