Nie mogę do końca życia zrozumieć to. Mam kontrolera web api z metodami Get and Post. Metoda Get działa dobrze z parametrami i bez nich, ale post łamie się, gdy próbuję dodać do niego parametr String. Poniżej znajduje się mój kod.Metoda ASP.NET WebApi Post - 404 Podczas przekazywania parametrów
Trasa:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = UrlParameter.Optional }
);
Kontroler:
public class AuditController : ApiController
{
public String Post(String test)
{
return "Success : " + test;
}
public String Get(String test)
{
return "Success : " + test;
}
}
Zapytanie:
var request = WebRequest.Create("http://localhost:42652/Audit");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write("test=TEST");
}
WebResponse webResponse = request.GetResponse();
Próbowałem wiele wariacji na życzenie, czuję się jak coś jest proste, jestem brakujący. Dzięki za pomoc.
Twoja trasa mówi, że ma parametr o nazwie "id", ale w twojej metodzie przekazujesz parametr o nazwie 'test'. Co to będzie? Również prymitywne parametry są zawsze próbowane do odczytu z Uri, więc twoja metoda postu nie zadziała. Naprawdę sugeruję, aby przejrzeć wszystkie bardzo ładne samouczki ASP.Net Web API na stronie głównej asp.net! – JustAnotherUserYouMayKnow
jest to^^ dokładne? – Jonesopolis
Tak, jest. Twoja metoda Get reprezentuje trasę bez parametru {id} - ponieważ Twój parametr id nie występuje w metodzie. Twój parametr testowy jest jednym z opcjonalnych parametrów zapytania, gdy wywołasz 'Audit? Test = value', ale nie w" Audit/value ". Odpowiedź, którą zaakceptowałeś, podsumowała to dobrze, ale nadal zachęcam cię do prawdziwej pracy z samouczkami! – JustAnotherUserYouMayKnow