Tôi đã cố gắng để thêm một phương thức POST thứ hai đến lớp ValuesController mặc định rằng sẽ mất một tham số id và hành động giống như các phương pháp PUT, như vậy:ASP.NET Web API - Nhiều phương thức POST trên một bộ điều khiển?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Web.Http;
namespace WebCalendar.Controllers {
public class ValuesController : ApiController {
// GET /values
public IEnumerable<string> Get() {
return new string[] { "value1", "value2" };
}
// GET /values/5
public string Get(int id) {
return "value";
}
// POST /values
public void Post(string value) {
}
// POST /values/5
public void Post(int id, string value) {
Put(id, value);
}
// PUT /values/5
public void Put(int id, string value){
}
// DELETE /values/5
public void Delete(int id) {
}
}
}
Vấn đề là, khi tôi thêm thứ hai này phương pháp đăng bài, bất kỳ khi nào tôi gửi yêu cầu POST, tôi nhận được lỗi:
"No action was found on the controller 'values' that matches the request."
Nếu tôi nhận xét một trong các phương pháp (không quan trọng cái nào), POST sẽ làm việc với phương pháp khác. Tôi đã thử đổi tên các phương pháp, và thậm chí sử dụng [HttpPost]
trên cả hai, nhưng không có gì đã làm việc.
Làm cách nào để có nhiều phương thức POST trong một ApiController?
EDIT
Đây là con đường duy nhất mà tôi đang sử dụng:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { controller = "values", id = RouteParameter.Optional }
);
Bạn có thể xin vui lòng gửi của bạn tuyến đường? –
Không giới hạn số lượng phương thức đăng bài bạn có thể có trên bộ điều khiển. Tôi nghi ngờ đó là vấn đề định tuyến – TGH
URL bạn đang gọi để thực hiện điều này là gì? Điều gì sẽ xảy ra nếu bạn cung cấp chuỗi truy vấn cho giá trị? Tôi nghĩ rằng vấn đề là tham số giá trị phải ở đó để định tuyến hoạt động vì nó không được đánh dấu tùy chọn. –