github は、コミットがリポジトリにプッシュされたときに警告を発し、Web サービスを呼び出すことができます ( Post-Receive Hooks )。github は、コミット情報を JSON として送信しますが、フォーム エンコードされたパラメーター内で送信します。つまり、コンテンツ タイプはapplication/x-www-form-urlencodedで、http リクエストは
POST /my_uri HTTP/1.1
Content-Type: application/x-www-form-urlencoded
payload=%7B%22ref%22%3A%22refs%2Fheads...
ASP.NET MVC または WebAPI で新しいコミットを処理する Web サービスを作成したいと考えています。json を逆シリアル化するクラスをいくつか定義しましたが、フレームワークでオブジェクトを直接初期化することができません。私が今持っているのは
public string my_uri(string payload)
{
var s = new JavaScriptSerializer();
var p = s.Deserialize(payload, typeof(Payload)) as Payload;
...
}
しかし、私はしたいです
public string my_uri(Payload payload)
{
...
}
ValueProviders について読んだことがありますが、それらを連鎖させる方法が見つかりませんでした。FormValueProviderFactory と JsonValueProviderFactory を構成する必要があります。どうすれば ASP にバインディングを実行させることができますか?