我正在开发一个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失败?谢谢!
发布于 2014-03-25 05:34:03
在IIS上部署MVC应用程序时,调用web API公开的REST服务的HTTP url会发生变化,这是一个常见的问题。如果您的应用程序接口控制器名为MyApiController,那么在生产环境中,您应该在调用URL之前添加应用程序名称。这意味着/api/MyApi将变成/MyApp/api/MyApi。MyApp是你的网站(你的网站/我的应用)的前缀。
发布于 2020-03-12 12:25:38
我们通过基于属性的路由为控制器命名,并为控制器内的每个端点命名。通用的GET,PUT,POST,PATCH由于安全原因是不允许的。
网络安全和我们的DevOps都需要它用于防火墙日志、性能监控和安全监控。
考虑使用:
[Route("api/inventory")]
public class InventoryController : ApiController
{
[HttpGet("inventorylist")]
public IActionResult InventoryList()
{
}
[HttpGet("inventoryitem")]
public ActionResult InventoryItem([FromQuery] string itemId)
{
}
}
发布于 2012-11-17 11:15:21
检查一下它们通常会有帮助的东西:
是控制器的名称
在这种情况下,URL api/xxxx应该可以工作。
https://stackoverflow.com/questions/13418344
复制相似问题