コントローラーのPOSTメソッドにパラメーターとしてNullを渡す

ザ・

私はかなり単純な間違いをしました。Fiddlerで、POSTを作成しました。「FileFullpath」で、2つではなく1つの円記号を使用したことに注意してください。

フィドラーPOST

私のWebAPIモデルは次のように定義されています...

public class GTMetadataModel
{
    public int Id { get; set; }

    public string ComputerId { get; set; }
    public string UserId { get; set; }
    public string FileFullpath { get; set; }

    public string Version { get; set; }
    public string[] Categories { get; set; }
    public double[] Scores { get; set; }
}

私のWebAPIコントローラーは次のように定義されています...

public HttpResponseMessage PostGTMetadata(GTMetadataModel newentry)
{
    ... // handle null parameter and return error here.
    var response = Request.CreateResponse<GTMetadataModel>(HttpStatusCode.Created, newentry);
    return response;
}

WebAPIを実行してFiddlerPOSTを送信すると、「newentry」がnullになります。2つの円記号が必要であることに気付くまでに少し時間がかかりました。2つに変更したところ、「newentry」が正しかった。

したがって、明らかに問題は提供された不良データでしたが、サーバー側のコードのどこでどのように不良Jsonデータを検出できますか?

更新:マークの回答が受け入れられます。参照されている投稿は、堅牢でエレガントなアプローチの良い例だからです。ただし、簡単な答えが必要な場合は、参照されている投稿で「this.ModelState」を使用して、解析されたデータの問題を特定します。次のコードをPostハンドラーメソッドに追加できます(おそらく、Markが参照する回答から何かを適応させます)。

if(ModelState.IsValid == false)
{
    var errors = ModelState
        .Where(s => s.Value.Errors.Count > 0)
        .Select(s => s.Key + ": " + s.Value.Errors.Select(t=>t.Exception.Message).Aggregate((a,b) => a + "\n" + b))
        .Aggregate((a, b) => a + "\n" + b);
    Debug.Print(errors);
    return Request.CreateErrorResponse(HttpStatusCode.BadRequest, errors);
}
マークタウン

アクションフィルターを使用して、不正な要求を傍受できます。

質問「ASP.NETWebAPIモデルバインダーのパラメーターの検証」を参照してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

CodeIgniterのコントローラーメソッドにパラメーターとしてワイルドカードサブドメインを渡す

分類Dev

JQGrid:JQGrid列の値をパラメーターとしてcellurlで指定されたコントローラーメソッドに渡します

分類Dev

MVC DropDownListの文字列値をパラメーターとしてコントローラーのメソッドに渡す方法は?

分類Dev

UIコントロールの値をパラメーターとしてTask.Factory.StartNew内のメソッドに渡すことはできません

分類Dev

コンテキストをメソッドパラメーターとしてコンストラクターに渡すのは誰か

分類Dev

ajax呼び出しを介してコントローラーのメソッドにパラメーターを渡します

分類Dev

FXMLコントローラー参照をパラメーターとしてメソッドに渡す一般的な方法はありますか?

分類Dev

MVCコントローラーのメソッドにパラメーターを渡すときにUrlエンコードを防ぐ方法

分類Dev

メソッドのパラメーターとしてクラスを渡し、Ifステートメントでこのパラメーターを使用する

分類Dev

メソッドをパラメーターとして渡す

分類Dev

メソッドをパラメーターとして渡す

分類Dev

varargパラメーターの一部としてnullをKotlinからJavaメソッドに渡す

分類Dev

複数のPOSTメソッドを使用してビューからコントローラーにデータを渡しますか?

分類Dev

パラメータ化されたコンストラクタをメソッド参照として渡す

分類Dev

「usingステートメント」内のパラメーターとして関数にコードを渡す

分類Dev

メソッドをパラメーターとしてJavaの別のメソッドに渡す

分類Dev

Kotlinの別のメソッドにパラメーターとして静的メソッドを渡す

分類Dev

基本クラスを使用して、継承コンポーネントをパラメーターとしてメソッドに渡す

分類Dev

Ajaxを使用してフォームデータをコントローラーメソッドに渡す

分類Dev

コンストラクターにパラメーターを渡すか、各メソッドにパラメーターを渡します

分類Dev

メソッド名をパラメーターとして別のメソッドに渡す

分類Dev

メソッドをパラメーターとして別のメソッドに渡す

分類Dev

あるビューから別のコントローラーのアクションメソッドにルーティングし、そのコントローラーのコンストラクターにパラメーターを渡す

分類Dev

(Java)コンストラクターからクラスのすべてのメソッドにパラメーターを渡します

分類Dev

メソッドをパラメーターとして別のメソッドに渡しますが、パラメーターを使用します

分類Dev

メソッドのオーバーロードでパラメータとして文字列を渡す

分類Dev

パラメータとしてメソッドに渡す方法

分類Dev

プロトコル内のオプションのメソッドでパラメーターとして列挙型を渡す方法

分類Dev

パラメータとしてメソッドを渡す

Related 関連記事

  1. 1

    CodeIgniterのコントローラーメソッドにパラメーターとしてワイルドカードサブドメインを渡す

  2. 2

    JQGrid:JQGrid列の値をパラメーターとしてcellurlで指定されたコントローラーメソッドに渡します

  3. 3

    MVC DropDownListの文字列値をパラメーターとしてコントローラーのメソッドに渡す方法は?

  4. 4

    UIコントロールの値をパラメーターとしてTask.Factory.StartNew内のメソッドに渡すことはできません

  5. 5

    コンテキストをメソッドパラメーターとしてコンストラクターに渡すのは誰か

  6. 6

    ajax呼び出しを介してコントローラーのメソッドにパラメーターを渡します

  7. 7

    FXMLコントローラー参照をパラメーターとしてメソッドに渡す一般的な方法はありますか?

  8. 8

    MVCコントローラーのメソッドにパラメーターを渡すときにUrlエンコードを防ぐ方法

  9. 9

    メソッドのパラメーターとしてクラスを渡し、Ifステートメントでこのパラメーターを使用する

  10. 10

    メソッドをパラメーターとして渡す

  11. 11

    メソッドをパラメーターとして渡す

  12. 12

    varargパラメーターの一部としてnullをKotlinからJavaメソッドに渡す

  13. 13

    複数のPOSTメソッドを使用してビューからコントローラーにデータを渡しますか?

  14. 14

    パラメータ化されたコンストラクタをメソッド参照として渡す

  15. 15

    「usingステートメント」内のパラメーターとして関数にコードを渡す

  16. 16

    メソッドをパラメーターとしてJavaの別のメソッドに渡す

  17. 17

    Kotlinの別のメソッドにパラメーターとして静的メソッドを渡す

  18. 18

    基本クラスを使用して、継承コンポーネントをパラメーターとしてメソッドに渡す

  19. 19

    Ajaxを使用してフォームデータをコントローラーメソッドに渡す

  20. 20

    コンストラクターにパラメーターを渡すか、各メソッドにパラメーターを渡します

  21. 21

    メソッド名をパラメーターとして別のメソッドに渡す

  22. 22

    メソッドをパラメーターとして別のメソッドに渡す

  23. 23

    あるビューから別のコントローラーのアクションメソッドにルーティングし、そのコントローラーのコンストラクターにパラメーターを渡す

  24. 24

    (Java)コンストラクターからクラスのすべてのメソッドにパラメーターを渡します

  25. 25

    メソッドをパラメーターとして別のメソッドに渡しますが、パラメーターを使用します

  26. 26

    メソッドのオーバーロードでパラメータとして文字列を渡す

  27. 27

    パラメータとしてメソッドに渡す方法

  28. 28

    プロトコル内のオプションのメソッドでパラメーターとして列挙型を渡す方法

  29. 29

    パラメータとしてメソッドを渡す

ホットタグ

アーカイブ