ASP.NET MVC预编译合并部署Azure Web App遇403禁止访问问题求助
Azure Web Apps部署ASP.NET MVC 5应用时出现403.14禁止错误,仅预编译合并为单程序集时触发
我维护着一个已经部署到Azure Web Apps超过7年的ASP.NET MVC 5(基于.NET Framework 4.8)应用。最近遇到了一个非常奇怪的问题:只有在单台电脑的某个特定分支,或者这台电脑上的早期代码版本,才能成功发布到Azure Web Apps。
每次尝试部署其他分支或其他电脑上的代码时,Visual Studio会显示部署成功,但几秒后输出窗口会弹出提示:
A call to warmup your site failed with response code: 'Forbidden'
更新于2023-01-22:现在已经确认,这个问题只在MVC项目预编译并合并为单个程序集的时候才会出现。如果不预编译,或者预编译但不合并成单程序集,那么任意电脑都可以成功发布任意分支的代码。
我完全搞不明白——根据版本控制显示,所有电脑上的代码都是一致的,publish.xml文件也完全相同(除非我关闭合并选项)。
补充观察
- 对比能正常工作的分支和有问题的分支的部署文件夹,发现只有二进制文件和包含源代码文件路径的文件存在差异;
- 触发403错误的部署完成后,静态文件请求仍然可以正常响应,但ASP.NET MVC的视图请求会失败;
- 部署“失败”后,通过FTPS访问站点,所有文件都显示正常且已经就位。
后续编辑
编辑1:当部署“失败”时,浏览器只会显示错误信息:
You do not have permission to view this directory or page.
编辑2:查看App Service的应用日志流后,发现具体的HTTP错误是403.14,由StaticFile处理器导致。我怀疑Web服务器把站点当成了静态站点,没有使用ASP.NET的路由机制。
我现在完全卡在这里了,恳请各位帮忙分析和解决这个问题!
内容的提问来源于stack exchange,提问作者SvenAelterman
相关产品推荐
相关产品推荐

