Ich kann nicht für das Leben von mir dies herausfinden. Ich habe einen Web-API-Controller mit Get und Post-Methoden. Die Get-Methode funktioniert einwandfrei mit und ohne Parameter, aber der Post bricht ab, wenn ich versuche, einen String-Parameter hinzuzufügen. Unten ist mein Code.ASP.NET WebApi Post-Methode - 404 Beim Übergeben von Parametern
Route:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = UrlParameter.Optional }
);
Controller:
public class AuditController : ApiController
{
public String Post(String test)
{
return "Success : " + test;
}
public String Get(String test)
{
return "Success : " + test;
}
}
Anfrage:
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();
ich viele Variationen der Anfrage versucht haben, ich fühle mich wie es ist etwas einfach ich bin fehlt. Danke für Ihre Hilfe.
Ihre Route sagt, es hat einen Parameter mit dem Namen "ID", aber in Ihrer Methode übergeben Sie einen Parameter namens "test". Was soll es sein? Auch primitive Typparameter versuchen immer aus dem Uri zu lesen, daher funktioniert Ihre Post-Methode nicht. Ich schlage vor, dass Sie alle sehr netten ASP.Net Web API Tutorials auf der asp.net Homepage durcharbeiten! – JustAnotherUserYouMayKnow
ist das ^^ genau? – Jonesopolis
Ja ist es. Ihre Get-Methode repräsentiert die Route ohne den Parameter {id} - weil Ihr ID-Parameter in der Methode nicht vorhanden ist. Ihr Testparameter ist einer der optionalen Abfrageparameter, wenn Sie 'Audit? Test = value', aber nicht 'Audit/value' aufrufen. Die Antwort, die du angenommen hast, fasst das gut zusammen, aber ich ermutige dich trotzdem, die Tutorials wirklich zu bearbeiten! – JustAnotherUserYouMayKnow