Elmah ログ エラーがあります。エラーは完全なフォーム投稿情報を保存します。これらのエラーとその XML または JSON 表現に URL でアクセスできます。デバッグしたいエラーのいくつかには多くの値が投稿されており、これらのエラーを再現するのは非常に難しく、時間がかかります。
私が望むのは、elmah ログ情報を使用して、特定の投稿アクションに必要なモデルを設定する方法です。次に、このモデルを単体テストで使用して、エラーが発生する理由を正確に確認できます。
これまでのところ、XML と JSON のエラー情報からモデルに解析してみました。以下は、JSONから解析しようとしたものです。
MyModel model = ParseTo<MyModel>("Url of elmah json error");
public static T ParseTo<T>(string UrlOfJson)
{
string fullJsonString = string.Empty;
using(var webClient = new WebClient())
{
fullJsonString = webClient.DownloadString(UrlOfJson);
}
JObject o = JObject.Parse(fullJsonString);
string inputString = o.SelectToken("form").ToString();
return JsonConvert.DeserializeObject<T>(inputString);
}
これはほとんど機能します。List オブジェクトを逆シリアル化できないためです。
次のモデルがあるとします。
public class MyModel
{
public int CustomerId { get; set; }
public List<Offer> Offers { get; set; }
}
public class Offer
{
public int Id { get; set; }
public string Name { get; set; }
}
...そしてこのJson:
{
"CustomerId": "4564",
"Offers[0].Id": "635",
"Offers[0].Name": "name1",
"Offers[1].Id": "636",
"Offers[1].Name": "name2",
}
... Offers
Elmah によって保存された Json が正しい形式ではないため、パーサーはプロパティのシリアル化に失敗します。デフォルトの ModelBinder で理解される形式ですが、この Json に対してどのように実行できますか?
Elamh によって保存された Json をモデル オブジェクトにシリアル化する方法はありますか?