You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC部署Azure App Service登录、子页面报404问题求助

ASP.NET MVC部署Azure App Service 子页面/登录提交404修复方案

最高优先级排查:web.config路由模块配置缺失

本地IIS Express默认集成了MVC路由所需的模块,Azure App Service使用标准版IIS,缺失对应配置时IIS会把所有非首页的动态请求当成静态文件查找,找不到直接返回404,这是该场景最高发的问题:

  • 打开项目根目录的web.config,找到<system.webServer>节点,补全以下配置:
<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <remove name="FormsAuthentication" />
  </modules>
  <handlers>
    <!-- 无扩展名请求处理程序,MVC路由必需,已有其他handler配置时不要重复新增handlers节点,仅补这一行即可 -->
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
  </handlers>
</system.webServer>

补完配置后,本地直接选中登录页或其他非首页启动调试,先验证本地404问题是否消失

第二优先级:检查表单提交路径硬编码问题

如果登录表单的action属性写死了绝对路径(比如action="/Account/Login"),当应用部署在虚拟目录、或本地调试路径和线上路径不一致时,请求会打到不存在的地址返回404:

  • 所有表单、跳转链接不要硬编码路径,用MVC自带的辅助方法生成相对路径:
    • 表单写法替换为@using (Html.BeginForm("Login", "Account", FormMethod.Post)) { /* 表单内容 */ }
    • 单独的链接地址用@Url.Action("Action名","Controller名")生成,保证部署路径变化时地址自动适配。

第三优先级:检查Azure运行时配置匹配

  • 进入Azure App Service的「配置>常规设置」页,确认.NET Framework版本和你项目开发用的版本一致:MVC5项目选择.NET Framework 4.x,不要误选.NET Core/.NET 5+版本,版本不匹配会导致托管模块不加载,所有动态请求异常。
  • 确认平台架构和项目编译目标一致:如果项目编译时指定了x64平台,把App Service的平台设置从默认32位改为64位。

第四优先级:检查路由注册顺序问题

MVC路由按注册顺序从上到下匹配,打开App_Start/RouteConfig.cs,确认默认路由注册在所有自定义路由的最末尾,且没有多余的请求约束拦截POST请求,标准默认路由写法如下:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    // 所有自定义路由写在默认路由之前
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

第五优先级:修复部署文件缺失问题

  • 右键项目选择「发布」,在发布设置中勾选「发布时预编译」,同时勾选「删除目标位置的其他文件」,避免旧版本残留的dll、视图文件导致路由匹配异常。
  • 发布完成后可通过Azure门户「高级工具>Kudu控制台」进入site/wwwroot目录,确认bin目录下项目相关dll、Views目录下所有视图文件都已完整上传,文件缺失也会触发404错误。

验证流程:

  1. 本地修改完配置后,直接启动非首页(如登录页)调试,确认登录提交、子页面跳转均无404
  2. 重新发布应用到Azure,清空浏览器缓存后访问测试所有功能

内容的提问来源于stack exchange,提问作者Vishen Haripersad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 20:48:21