Próbowałem dodać drugi metody POST do domyślnej klasy ValuesController który zaprowadzi parametr id i działania identyczne metody PUT, jak tak:ASP.NET Web API - Wiele metod POST na jednym kontrolerze?
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) {
}
}
}
Problem jest, kiedy dodać ten drugi metoda pOST, za każdym razem robię żądania pOST, pojawia się błąd:
"No action was found on the controller 'values' that matches the request."
Gdybym Wykomentuj jednej z metod (nie ma znaczenia, który z nich), pOST będzie współpracować z innym sposobem. Próbowałem zmienić nazwy metod, a nawet używać [HttpPost]
na obu, ale nic nie zadziałało.
Jak mogę mieć więcej niż jedną metodę POST w jednym ApiControllerze?
EDIT
Oto jedyna droga, że używam:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { controller = "values", id = RouteParameter.Optional }
);
Czy możesz zamieścić swoje trasy? –
Brak limitu liczby metod post na kontroler. Podejrzewam, że to problem z routingiem. – TGH
Jaki jest adres URL, pod który dzwonisz, aby to się nie udało? Co się stanie, jeśli podasz ciąg zapytania dla wartości? Myślę, że problem polega na tym, że parametr musi być tam, aby routing działał, ponieważ nie jest oznaczony jako opcjonalny. –