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

在ASP.NET Web Forms中添加Web API遇路由匹配问题求助

排查Web API路由匹配问题的解决方向
  • 检查控制器命名规范:Web API默认要求控制器类名必须以Controller后缀结尾,比如你的控制器需命名为vSendController(而非vSend)。路由系统会自动去掉Controller后缀来匹配URI中的控制器名称,类名不符合规范会导致路由无法识别。

  • 确认控制器继承关系:控制器类必须继承自ApiController(而非Web Forms的Page或MVC的Controller),示例代码如下:

    Public Class vSendController
        Inherits ApiController
    
        ' 对应POST请求的方法,方法名以Post开头或标记[HttpPost]特性
        Public Function Post(<FromBody> requestData As Object) As IHttpActionResult
            ' 业务逻辑处理
            Return Ok("请求成功")
        End Function
    End Class
    
  • 验证Web API路由配置:

    1. 在Global.asax的Application_Start方法中,确保优先注册Web API路由,代码示例:
      Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
          ' 注册Web API路由
          GlobalConfiguration.Configure(AddressOf WebApiConfig.Register)
          ' 其他路由注册(如Web Forms路由)放在后面
      End Sub
      
    2. 检查WebApiConfig类中的路由模板是否正确,默认配置需包含api/{controller}/{id}模板:
      Public Module WebApiConfig
          Public Sub Register(config As HttpConfiguration)
              ' 启用属性路由(可选,若使用特性路由需开启)
              config.MapHttpAttributeRoutes()
      
              ' 默认路由规则
              config.Routes.MapHttpRoute(
                  name:="DefaultApi",
                  routeTemplate:="api/{controller}/{id}",
                  defaults:=New With {.id = RouteParameter.Optional}
              )
          End Sub
      End Module
      
  • 确认请求方法匹配:

    • 若控制器中处理POST请求的方法名不是以Post开头,需添加<HttpPost>特性标记,示例:
      <HttpPost>
      Public Function SendMessage(<FromBody> data As YourModel) As IHttpActionResult
          ' 处理逻辑
          Return Ok()
      End Function
      
  • 检查NuGet包依赖:确保项目已安装Microsoft.AspNet.WebApi.WebHost等Web API核心包,缺失依赖会导致路由系统无法正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:15:07