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

ASP.NET Web Forms中Web API仅内部AJAX可用,Postman无法访问怎么办?

解决Postman访问ASP.NET Web API返回HTML的问题

核心原因

jQuery的$.getJSON会自动在请求头中添加Accept: application/json,Web API据此返回JSON格式;而Postman默认请求头未指定该参数,导致Web API无法识别期望的响应格式,转而返回网站默认HTML页面。

具体解决方法

1. 在Postman中添加Accept请求头

打开Postman的请求编辑界面,切换到「Headers」标签,添加一条键值对:

  • 键:Accept
  • 值:application/json
    发送请求后即可获取JSON响应。

2. 确保Web API路由优先级高于Web Forms路由

在Global.asax.cs的Application_Start方法中,先注册Web API路由,再注册Web Forms的路由(如果存在)。正确顺序示例:

protected void Application_Start(object sender, EventArgs e)
{
    // 先注册Web API路由
    RouteTable.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = System.Web.Http.RouteParameter.Optional }
    );

    // 再注册Web Forms路由(如果有)
    RouteConfig.RegisterRoutes(RouteTable.Routes);
}

若Web Forms路由先被匹配,会直接返回页面而非API响应。

3. (可选)强制Web API返回JSON格式

如果需要让API始终返回JSON,无需依赖请求头,可以修改控制器方法的返回类型为HttpResponseMessage并指定媒体类型:

public HttpResponseMessage GetAllProducts()
{
    var response = Request.CreateResponse(HttpStatusCode.OK, products);
    response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
    return response;
}

此方法适合不需要支持多格式响应的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:26:13