我想在记录的特定字段中创建更新方法。 我是ASP.Net中Web API 2的新手。我创建了一个方法,但总是得到一个错误
{"Message":"The requested resource does not support http method 'GET'."}
我想创建一个这样的自定义方法:
[HttpPut]
public string AddDeviceID(string deviceID)
{
User user = db.Users.Single(x => x.MobileUserName == "Dev" && x.MobilePassword == "123");
user.MobileDeviceId = deviceID;
db.SaveChanges();
return "success";
}
这是我的路线配置:
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{deviceId}",
defaults: new { deviceId = RouteParameter.Optional }
);
我不知道我在这段代码上缺少什么我只是遵循ASP.Net MVC创建更新方法的概念。
任何人都可以提供一些想法吗?提前谢谢。
答案 0 :(得分:1)
您需要使用HTTP PUT请求调用您的api。您收到此错误,因为您执行HTTP GET请求。
即使您接受了另一个答案,您仍然应该使用HttpPut
属性,因为它的含义更正确。
获取强>
GET方法请求指定资源的表示。 使用GET的请求应该只检索数据并且应该具有 没有其他影响。(其他一些HTTP方法也是如此。)[1] W3C发布了关于这种区别的指导原则,说, " Web应用程序设计应遵循上述原则, 但也有相关的限制。"
<强> PUT 强>
PUT方法请求将所包含的实体存储在提供的URI下。如果URI引用已存在的资源, 它被修改;如果URI未指向现有资源, 然后服务器可以使用该URI创建资源。
只需谷歌了解如何使用您正在测试的库/软件发送HTTP PUT Request
。
顺便说一下:Postman是一个很好的测试工具。
答案 1 :(得分:0)
发生此错误是因为您执行了HTTP GET请求,但您的操作使用[HttpPut]
属性修饰,并且只能接受HTTP PUT。要解决此问题,您可以实现执行HTTP PUT请求的功能,或者您可以使用[HttpGet]
属性修饰您的操作,如下例所示:
[HttpGet]
public string AddDeviceID(string deviceID)
{
User user = db.Users.Single(x => x.MobileUserName == "Dev" && x.MobilePassword == "123");
user.MobileDeviceId = deviceID;
db.SaveChanges();
return "success";
}
您是如何提出请求的?请注意,浏览器将发出HTTP GET请求。