2012-04-07 7 views
0

アクション(ファイルのアップロード)にmultipart/form-dataリクエストを送信していますが、そのIDを持つアクションに送信しますAsp.net WebApi経路定義のIDを持つmultipart/form-data

routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}/{action}", 
    defaults: new {action = "Index", id = RouteParameter.Optional } 
); 

のURL私が投稿しています:ルートで指定されたURL /api/Contacts/1/Photo

処置:

idパラメータで
[HttpPost] 
public HttpResponseMessage Photo(int id) 
{ 

    var task = this.Request.Content.ReadAsStreamAsync(); 
    task.Wait(); 
    Stream requestStream = task.Result; 

    /* ... */ 

} 

、私はこのエラーを取得:No 'MediaTypeFormatter' is available to read an object of type 'Int32' with the media type 'multipart/form-data'. IDなしPAそれはうまく動作します。

この回答でMediaTypeFormatterを試しましたが、FirstDispositionNameOrDefault("id")を取得しようとすると、URLからIDを取得してクラッシュしないようですが、この回答はhereです。アクションのidパラメータにバインドするURLに指定されたidを取得する方法はありますか?

答えて

2

FirstDispositionNameOrDefaultは、フォームコントロールの値を読み取るためのものです。

あなたは、パラメータの[FromUri]属性を使用することができます

public HttpResponseMessage Photo([FromUri] int id) 

これは、メッセージ本体からパラメータを取得することではないのWeb APIを告げます。

+1

+1。ありがとう。しかし、確かにフォーマッタのエラーは本当に誤解を招く**です。問題はフォーマッタではなく、アクションを解決しようとしているようですか? – Aliostad

関連する問題