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

ASP.NET WebForms页面添加Ajax遇404错误求助

排查ASPX页面WebMethod Ajax 404错误的常见原因

1. 页面路径硬编码错误

你当前用的url: "/Product_AddUpdate.aspx/BtnAddCoin"是根路径写法,如果页面实际不在网站根目录(比如放在/Products/子文件夹下),这个路径会直接找不到。

  • 解决:用ASP.NET的路径解析方法动态生成正确地址,避免硬编码:
    var coin = 1;
    $.ajax({
        type: "POST",
        url: '<%= ResolveUrl("~/Product_AddUpdate.aspx/BtnAddCoin") %>',
        data: JSON.stringify({ coin: coin }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function () {
            alert("AddCoin");
        },
        error: function (req, status, error) {
            alert("x" + error + status);
        }
    });
    

2. WebMethod相关Handler配置缺失

WebForms的WebMethod依赖特定的HttpHandler处理请求,检查Web.config是否有正确配置:

  • 在<system.web>节点下确认:
    <httpHandlers>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
    </httpHandlers>
    
  • 如果你用的是IIS7及以上的集成模式,还要在<system.webServer>节点下补充:
    <handlers>
        <remove name="WebServiceHandlerFactory-Integrated"/>
        <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </handlers>
    

3. 页面会话状态配置冲突

你启用了enableSession: true,要确保ASPX页面的会话状态没有被禁用:
检查页面顶部的Page指令:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Product_AddUpdate.aspx.cs" Inherits="YourNamespace.Product_AddUpdate" EnableSessionState="True" %>

如果EnableSessionState设为False,带会话状态的WebMethod会无法被访问。

4. URL重写规则拦截请求

如果项目中使用了URL重写模块,规则可能会拦截/Product_AddUpdate.aspx/BtnAddCoin这种带方法名的路径,导致404。可以暂时禁用重写规则测试,或者在规则中添加例外,排除ASPX页面的WebMethod请求。

5. 页面基类问题

确保你的页面后台类继承自System.Web.UI.Page,如果用了自定义基类,要确认它没有覆盖或禁用WebMethod的处理逻辑。

6. 直接请求验证

用Postman或Fiddler直接发送POST请求到目标路径,看是否能得到正常响应,这能快速区分是路径问题还是代码/配置问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:28:20