使用 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 错误的主要内容,如果未能解决你的问题,请参考以下文章