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

解决IIS无端口ASP.NET MVC站点Ajax调用Action方法404错误

解决ASP.NET MVC部署IIS默认站点Ajax 404错误的建议
  • 修正Ajax请求的URL生成逻辑
    部署到默认网站的子应用后,站点根路径从domainname:8282变成了domain/appname,硬编码的/controller/actionmethod会直接跳过子应用路径,指向domain/controller/actionmethod导致404。
    正确做法是用MVC内置的Url.Action()生成带子应用路径的请求地址,示例代码:

    var requestUrl = '@Url.Action("ActionMethod", "Home")';
    $.ajax({
        url: requestUrl,
        // 其他Ajax配置项
    });
    

    该方法会自动生成domain/appname/Home/ActionMethod这类符合子应用结构的URL。

  • 检查IIS子应用配置
    确认你的应用是作为默认网站的子应用创建,而非独立站点。同时验证子应用的应用池:

    • 托管框架版本匹配你的MVC项目(如.NET Framework 4.x)
    • 托管管道模式设置为集成模式(经典模式易引发路由解析问题)
  • 验证路由规则
    打开RouteConfig.cs,确保默认路由规则未被修改,标准配置如下:

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
    

    不要给路由添加固定前缀,保证路由能正确识别子应用下的控制器与动作。

  • 排查手动拼接URL的问题
    如果是手动拼接请求地址,需确保包含子应用的虚拟路径。可以通过浏览器开发者工具(F12)的Network标签,查看Ajax请求的实际URL是否缺失子应用路径。若需手动拼接,可通过window.location.pathname获取根路径:

    var appRoot = window.location.pathname.split('/')[1];
    var requestUrl = '/' + appRoot + '/Home/ActionMethod';
    

    但优先推荐使用Url.Action()避免手动拼接出错。

  • 检查URL重写规则(若有配置)
    若之前配置过IIS URL重写模块,确认规则未忽略子应用路径,导致请求被错误重定向。可暂时禁用重写规则,测试请求是否恢复正常。

内容的提问来源于stack exchange,提问作者MsDotNet raja

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:15:58