【问题标题】:Getting 404 when trying to hit the WebAPI controller method尝试访问 WebAPI 控制器方法时出现 404
【发布时间】:2017-07-14 11:26:47
【问题描述】:

我使用 ASP.NET Core Web 应用程序 (.NET Framework) 创建了一个项目。我的项目结构:

我的值控制器继承自 MVC 控制器。当我点击http://localhost:20798/api/values 时,我确实得到了想要的响应。

我添加了 ConsumerScore 控制器,这次是继承自 ApiController 的 WebAPI 控制器。但是现在当我点击http://localhost:20798/api/consumerscore 时,我得到了 404 响应。

我的 ConsumerScore 控制器看起来像:

如何解决这个错误?

【问题讨论】:

  • 当您尝试访问“默认”方式时,为什么有一个特殊的 ConsumerScoreController 路由?
  • @NicoRiff 早些时候我没有它我后来添加它,认为它会解决错误。但没有运气!
  • 该代码混合了 asp.net-mvc5 和 asp.net-core

标签: c# asp.net asp.net-web-api asp.net-core


【解决方案1】:

错误在于“ApiController”,您应该在实现中只使用 Controller。

由于 MVC 和 WebAPI 已合并到 ASP.NET Core 中,因此确实不再有特定的 ApiController 类。但是,MVC 的 Controller 类带来了许多您在仅开发 Web API 时可能不需要的功能,例如视图和模型绑定。

更多信息请见:Is ApiController deprecated in .NET CORE?

【讨论】:

  • 虽然您的答案是 100% 正确的,但如果该链接被移动、更改、合并到另一个链接或主站点消失,它也可能 100% 无用... :-( 因此,请edit您的回答,并将链接中的相关步骤复制到您的回答中,从而保证您在本站100%的生命周期内回答!;-)您始终可以将链接留在答案底部作为材料来源...
  • 谢谢,@Paulo 我认为 ASP.NET 核心项目在添加控制器时不应该提供 2 个选择。
【解决方案2】:

您似乎混淆了“MVC”和“Web API”的概念。

ASP.net MVC 用于为网页提供服务,而 Web API 应该以可协商的方式 (json/xml/...) 为 http 请求提供数据。

将“api/*”添加到 MVC 路由并从 MVC Controller 提供数据不是最好的主意,也不会将其变成有用的 Web 服务。

从你的方法来看,我想你需要的是一个 ApiController 但你不能通过将“~/api/*”复制到你的网络浏览器来创建 http 请求,你需要使用像 fiddler 这样的工具或您的浏览器的调试器。

【讨论】:

    猜你喜欢
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多