編集:Issue on GitHub here。ナンシーのシリアル化エラーのキャプチャ
初めてナンシーで遊んとAccept
ヘッダーに基づいてコンテンツネゴシエーションをテストする場合は、このシンプルなエンドポイント書いた:Postmanを使用して
public HomeModule()
{
Get["/"] = _ => new { Foo = "Bar" };
}
を、私はAccept: application/json
を設定し、期待通りの結果があり、しばらくAccept: text/xml
テキストを得られます。
XMLドキュメント
を生成するときにエラーが発生しました
いくつか試行錯誤した結果、これは匿名型が原因であることが判明しました。これはXmlSerializerに関する別の問題です。しかし、私はどのようにこのシリアライゼーションエラーをキャプチャするのか把握できません。それは、ナンシーやASP.NETのどこかで "飲み込まれた"ようなものです。上記のメッセージは、ステータスコード200 OKを含むリクエスタにテキストとして返されます。
上のすべてのの例外を破るだけでなく、pipelines.OnError
とApplication_OnError
にフックアップするためのセットアップのVisual Studioにもかかわらず、私はエラーが発生したという兆候を取得していません。私はこれが一般的なシリアライザ、ASP.NETまたはナンシーの問題であるかどうかは不明です(または明らかに何かが分からない場合)。
// in bootstrapper's ApplicationStartup method:
pipelines.OnError += (ctx, ex) => {
System.Diagnostics.Trace.WriteLine(ex?.ToString()); // doesn't fire
return null;
};
// in Global.asax:
protected void Application_Error(object sender, EventArgs e)
{
var err = Server.GetLastError();
System.Diagnostics.Trace.WriteLine(err?.Message);
}
このエラーはなぜ投げられないのですか?
感謝を確認してください。私は、XmlSerializerがシリアライゼーションに関する原因であることを認識しており、修正は簡単です。私の質問は、エラーが200 OK応答の後ろに隠れているという事実に関係しています。私はどこかでエラーを捕捉/記録できると予想していたでしょう。あなたはこれについていくつかの光を当てることができますか? – bernhof
ありがとうございます。*エラーはありますが、DefaultXmlSerializerによって隠されています。なぜこれがなぜだろうかと思っています。繰り返しますが、このようなエラーが発生すると** 200 OK **の応答は期待できませんが、これをGitHubで問題を提起します。乾杯! – bernhof