C#web Api2.0 - 405方法不允许[put]

时间:2018-01-19 17:15:08

标签: c# entity-framework asp.net-web-api2

我尝试在数据库get,post,delete方法的桌子上制作一个web api,但是当我尝试应用 Put 方法时,我得到 405 Method Not Allowed 使用 Fiddler

这里是post方法的代码:

[HttpPut]
        public void Put(int UserID, [FromBody] User obj)
        {
            var webApi = db.WebApis.Find(UserID);
            if (webApi != null)
            {
                webApi.Name = obj.Name;
                webApi.address = obj.address;
            }
            db.SaveChanges();
}

webApiConfig文件:

using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace WEbAPi
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();
            config.Routes.MapHttpRoute(
                          name: "DatatApi",
                          routeTemplate: "data/{id}",
                          defaults: new { id = RouteParameter.Optional }
                      );
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

2 个答案:

答案 0 :(得分:3)

您是否定义了PUT方法,如果是,请发布。否则,您的问题是您在没有PUT方法的情况下尝试在控制器上调用PUT

编辑: 您的ID属性名为UserID,但在您的路线配置中,您指定第三个分段为id。将您的参数更改为id

答案 1 :(得分:0)

确保在配置文件夹中包含以下代码:

pwd.getpwuid(os.getuid())[0]

这是一篇非常好的文章,解释了如何解决您的问题 From the docs

相关问题