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

Web API报错:未找到Upload控制器匹配的UploadFile方法

解决Web API 404:未找到控制器‘Upload’上匹配名称‘uploadfile’的操作

我来帮你排查这个404问题,从你的代码来看,主要有几个可能的原因,咱们一步步解决:

1. 启用特性路由(最可能的根因)

你在UploadFile方法上使用了特性路由([Route]属性),但在Global.asax的Application_Start里没有启用特性路由支持。Web API 2及以上版本需要显式开启特性路由,否则控制器上的[Route]属性不会生效。

修改你的Global.asax代码,先启用特性路由再配置约定路由:

<%@ Import Namespace="System.Web.Routing" %>
<%@ Import Namespace="System.Web.Http" %>
<%@ Application Language="VB" %>
<script runat="server">
    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        ' 先启用特性路由支持
        GlobalConfiguration.Configuration.MapHttpAttributeRoutes()
        
        ' 再配置默认约定路由
        RouteTable.Routes.MapHttpRoute(
            name:="DefaultApi",
            routeTemplate:="api/{controller}/{action}/{id}",
            defaults:=New With {.id = System.Web.Http.RouteParameter.Optional}
        )
    End Sub
</script>

2. 确保请求使用POST方法

你的UploadFile方法标记了[HttpPost],这意味着它只接受POST请求。如果你直接在浏览器地址栏输入URL访问(这是GET请求),Web API会找不到匹配的GET操作,从而返回404。

你需要用POST请求工具(比如Postman、curl)测试,或者在前端通过AJAX发送POST请求到目标URL。

3. 验证控制器与方法的合规性

  • 你的控制器类名UploadController以Controller结尾,符合Web API的命名规则,没问题。
  • UploadFile方法是Public修饰的,满足Web API对操作方法的访问权限要求。

4. 确认路由优先级

当特性路由和约定路由共存时,特性路由的优先级更高。启用特性路由后,你配置的[Route("api/Upload/UploadFile")]会直接匹配访问URL,无需依赖约定路由的规则。

修改完成后重启项目,用POST请求测试http://localhost:[portno]/api/Upload/UploadFile,应该就能正常访问了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:26:56