2

更新:解決しました!ここに表示されるものはありません。先に進んでください:-)

パラメータをApiController取るメソッドがありSystem.Versionます。パラメータは、JSONとしてリクエスト本文に渡されます。これが送信されるものです:

{"メジャー":0、 "マイナー":7、 "ビルド":0、 "リビジョン":0、 "メジャーリビジョン":0、 "マイナーリビジョン":0}

ルーティングは機能します-私のメソッドが呼び出されています-しかし、パラメーターには空のVersionオブジェクトがあります(すべての値がゼロです)。なんで?

コントローラメソッドの宣言は次のとおりです。

    // POST api/service/details
    [HttpPost]
    [ActionName("Details")]
    public ServiceDto Get(Version version)
    {
    }
4

2 に答える 2

1

他の誰かがこれに答えようとするのを防ぐための答えは、System.Versionクラスのメンバーにパブリックセッターがないということです。したがって、適切に逆シリアル化することはできず、初期状態のままになります。公的に設定可能なメンバーを持つ独自の「バージョン」クラスを使用する必要があり、それは正常に機能しました。

于 2012-09-27T13:26:26.070 に答える
0

[Serializable]が問題になるとは思わない。

クライアント側からヘッダーとして「Content-Type:application/json」を入れてみてください。このように[FromBody]属性も使用します。

[HttpPost]
[ActionName("Details")]
public ServiceDto Get([FromBody]Version version)
{
}
于 2012-09-27T11:46:08.447 に答える