Ich sende eine Multipart/Form-Datenanforderung an eine Aktion (Datei-Upload), aber ich sende es an eine Aktion, die die ID hat als die URL der Route angegeben:Asp.net WebApi Multipart/Formulardaten mit ID aus Routendefinition
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/{action}",
defaults: new {action = "Index", id = RouteParameter.Optional }
);
URL ich poste auf: /api/Contacts/1/Photo
Aktion:
[HttpPost]
public HttpResponseMessage Photo(int id)
{
var task = this.Request.Content.ReadAsStreamAsync();
task.Wait();
Stream requestStream = task.Result;
/* ... */
}
Mit dem id-Parameter, bekomme ich diesen Fehler: No 'MediaTypeFormatter' is available to read an object of type 'Int32' with the media type 'multipart/form-data'.
Ohne die id pa Rameter, es funktioniert gut.
Ich versuchte ein MediaTypeFormatter in dieser Antwort here, aber es scheint nicht, die ID von der URL zu bekommen und stürzt ab, wenn man versucht, es mit FirstDispositionNameOrDefault("id")
zu bekommen. Gibt es eine Möglichkeit, die in der Routen-URL angegebene ID an den ID-Parameter für die Aktion zu binden?
+1. Vielen Dank. Aber sicherlich ist der Formatierungsfehler ** wirklich irreführend **. Das Problem ist nicht der Formatierer, sondern scheint die Aktion zu lösen. – Aliostad