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

Web API自定义AuthFilter调用报错:找不到HttpRequestMessage获取方法

解决Web API中“Method not found: 'System.Net.Http.HttpRequestMessage System.Web.Http.Controllers.HttpActionContext.get_Request()'”错误

这种错误我之前帮不少开发者排查过,大概率是ASP.NET Web API版本不兼容导致的——具体来说,是你项目里引用的System.Web.Http和System.Net.Http程序集版本不匹配,或者存在重复引用的问题。下面给你一步步的解决办法:

1. 统一Web API相关NuGet包版本

打开项目的NuGet包管理器,先卸载所有和ASP.NET Web API相关的包(比如Microsoft.AspNet.WebApi.Core、Microsoft.AspNet.WebApi.Client、Microsoft.AspNet.WebApi.WebHost),然后重新安装同一版本的最新稳定版(比如目前常用的5.2.9版本)。混合不同版本的包是引发这类方法找不到问题的常见原因。

2. 清理重复的程序集引用

右键项目 → 选择「管理NuGet程序包」→ 切换到「已安装」标签,检查有没有重复的System.Web.Http或System.Net.Http引用,有的话卸载多余的。另外,去项目的「引用」列表里确认,没有同时引用NuGet包版本和系统GAC里的旧版本程序集。

3. 配置正确的程序集绑定重定向

打开项目的web.config,确保在<runtime>节点里添加了正确的绑定重定向,强制项目使用统一的程序集版本。示例配置如下(记得把版本号替换成你实际安装的版本):

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-5.2.9.0" newVersion="5.2.9.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

4. 清理并重新生成解决方案

做完上面的操作后,右键解决方案 → 选择「清理解决方案」,接着再「生成解决方案」,确保所有程序集都重新编译并引用了正确的版本。

另外,顺便确认下你在global.asax.cs里的筛选器注册代码是否正确,标准的注册方式应该是这样的:

protected void Application_Start()
{
    GlobalConfiguration.Configure(WebApiConfig.Register);
    // 注册全局Auth筛选器
    GlobalConfiguration.Configuration.Filters.Add(new AuthFilterAttribute());
}

完成这些步骤后,再用Postman调用你的Web API,这个“找不到方法”的错误应该就能解决了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:34:43