使用 ajax 调用 webapi get 方法时出现 405 错误

Posted

技术标签:

【中文标题】使用 ajax 调用 webapi get 方法时出现 405 错误【英文标题】:405 error while calling webapi get method using ajax 【发布时间】:2016-10-16 02:54:44 【问题描述】:

我开发了一个用于测试的 WebApi 和客户端页面。 这是我的控制器

public class CarDetailsController : ApiController

    // GET api/cardetails
    [HttpGet]
    public IEnumerable<CarsStock > GetAllcarDetails()
    
        CarsStock ST = new CarsStock();
        CarsStock ST1 = new CarsStock();
        List<CarsStock> li = new List<CarsStock>();

            ST.CarName = "Maruti Waganor";
            ST.CarPrice = "4 Lakh";
            ST.CarModel = "VXI";
            ST.CarColor = "Brown";
            li.Add(ST);

            ST1.CarName = "Maruti Swift";
            ST1.CarPrice = "5 Lakh";
            ST1.CarModel = "VXI";
            ST1.CarColor = "RED";
            li.Add(ST1);

        return li;  
    

这是我的 ajax 调用

    <button onclick="AllcarDetails()"></button>
    <script  type="text/javascript">
        function AllcarDetails()
        
            $.ajax(  
            type: "GET",  
            headers: 
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            ,
            contentType: 'application/json',
            url: "http://localhost:1822/api/cardetails", //URI   
            success: function (data)   
                debugger;  
                var datadatavalue = data;  

            ,  
            error: function (xhr)   
                alert(xhr.responseText);  
              
    );  
        
    </script>

它一直给出 405 Method Not Allowed 错误。我尝试通过谷歌搜索但找不到确切的情况。有人可以帮我解决这个问题吗?

从浏览器'http://localhost:1822/api/cardetails'调用时得到正确的结果

【问题讨论】:

所以它可以在浏览器上运行,但是它在哪里不工作呢?只是一个猜测,尝试删除标题。 调用ajax GET方法时报错 我已删除但仍无法正常工作 我也猜想 ajax 和 api 在同一台服务器上运行,所以把你的 url 改成这样:url: "/api/cardetails",。还要确保您在控制器上使用[System.Web.Http.HttpGet] 属性,而不是[System.Web.Mvc.HttpGet] 属性。 url改成“localhost:8383/api/cardetails”但是没有响应或者报错 【参考方案1】:

您是否检查过在您运行此代码的地方激活了 HTTP 激活?

【讨论】:

虽然只是在浏览器中调用 uri 我可以得到结果,但使用 ajax 会出现 405 错误

以上是关于使用 ajax 调用 webapi get 方法时出现 405 错误的主要内容,如果未能解决你的问题,请参考以下文章

WebAPI请求——js调用

如何从 jQuery ajax 调用将复杂对象传递给 ASP.NET WebApi GET?

使用 Ajax 调用 Web Api 方法时出现错误 400

AJAX 和 WebAPI 的问题

C#使用WebRequest调用WebApi的方法

从 js ajax 调用 WebApi 控制器的问题