2016-03-31 14 views
0

私は、ユーザがリクエストボディの中に書かれたURL またはにエンコードされたパラメータでPOSTメソッドを呼び出すことができるようにPOSTメソッドを公開したいと考えています。擬似コード:彼らは同じシグネチャを持っているのでMVC 5からFromUriまたはFromBodyを使用する

public HttpResponseMessage MyMethod([FromUri] parameters) 
public HttpResponseMessage MyMethod([FromBody] parameters) 

public HttpResponseMessage MyMethod([FromUri, FromBody] parameters) 
{ 
    //.. 
} 

それは、2つのメソッドを公開経由でも可能ではありません。どのように簡単な方法でこれを達成するには?

答えて

2

あなたは箱から出すことはできません。両方の属性を一緒に使用しようとすると、このきめ細かいエラーが発生します。パラメータ 'xxx'をバインドできません。

二つの可能な解決策:

  1. を使用して、2つの異なる方法が、二つの異なる動詞(例えば1つのGET、1つのポスト)との - 簡単な方法
  2. のみを使用し[FromUri]とカスタムアクションフィルターを使用(thisのような)ボディの内容をチェックし、存在する場合、それを手作業で解析し、正しいメソッドパラメータにバインドします - それほど簡単ではありませんが、より強力です。

希望します。

関連する問題