首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Web API接口在本地工作,但在部署到Azure网站后获得404

Web API接口在本地工作,但在部署到Azure网站后获得404
EN

Stack Overflow用户
提问于 2012-11-16 22:14:50
回答 4查看 8.8K关注 0票数 21

我正在开发一个ASP.NET MVC4网站。连同MVC控制器,我有一个包含ajax GET API接口的API控制器。当使用visual studio进行本地调试时,它可以完美地工作。

然而,在我将其部署为Azure网站后,MVC控制器可以工作,但API控制器不再工作。当jQuery代码试图访问它时,它会返回如下响应:

找不到与请求URI 'http://example.com‘匹配的

资源。

看起来至少路由是有效的(否则,将返回另一个404响应体。)

此外,我还部署了另一个纯MVC 4 Web API服务作为Azure云服务。它工作得很完美。因此,我想知道是什么导致MVC网站内部的API失败?谢谢!

EN

回答 4

Stack Overflow用户

发布于 2014-03-25 05:34:03

在IIS上部署MVC应用程序时,调用web API公开的REST服务的HTTP url会发生变化,这是一个常见的问题。如果您的应用程序接口控制器名为MyApiController,那么在生产环境中,您应该在调用URL之前添加应用程序名称。这意味着/api/MyApi将变成/MyApp/api/MyApi。MyApp是你的网站(你的网站/我的应用)的前缀。

票数 2
EN

Stack Overflow用户

发布于 2020-03-12 12:25:38

我们通过基于属性的路由为控制器命名,并为控制器内的每个端点命名。通用的GET,PUT,POST,PATCH由于安全原因是不允许的。

网络安全和我们的DevOps都需要它用于防火墙日志、性能监控和安全监控。

考虑使用:

代码语言:javascript
复制
    [Route("api/inventory")]
    public class InventoryController : ApiController
    {
      [HttpGet("inventorylist")]
      public IActionResult InventoryList() 
      { 
      }

      [HttpGet("inventoryitem")]
      public ActionResult InventoryItem([FromQuery] string itemId) 
      {
      }
    }
票数 2
EN

Stack Overflow用户

发布于 2012-11-17 11:15:21

检查一下它们通常会有帮助的东西:

  1. 确保您的控制器类型为public并且派生自ApiController
  2. Make确保控制器的名称为'xxxxController‘,其中

是控制器的名称

在这种情况下,URL api/xxxx应该可以工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13418344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档