我正在向一个操作(文件上传)发送一个 multipart/form-data 请求,但我将它发送到一个在 url 中具有由路由指定的 id 的操作:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/{action}",
defaults: new {action = "Index", id = RouteParameter.Optional }
);
我要发布到的网址:/api/Contacts/1/Photo
行动:
[HttpPost]
public HttpResponseMessage Photo(int id)
{
var task = this.Request.Content.ReadAsStreamAsync();
task.Wait();
Stream requestStream = task.Result;
/* ... */
}
使用 id 参数,我得到这个错误:No 'MediaTypeFormatter' is available to read an object of type 'Int32' with the media type 'multipart/form-data'.
没有 id 参数,它工作正常。
我在这里的这个答案中尝试了 MediaTypeFormatter ,但它似乎没有从 url 获取 id 并且在尝试使用它时崩溃FirstDispositionNameOrDefault("id")
。有没有办法让路由 url 中指定的 id 绑定到操作的 id 参数?