私はこの問題を数日間解決しています(この問題を克服し、髪の毛を引っ張っている人のために修正されました)。MVC WebAPIが情報なしで500エラーを返しました
MVC4 WebAPIをデータ用に使用するSilverlightアプリケーションに最新のコードを変更した後、HttpGetアクションの1つに問題が発生しました。IQueryable<oneofmyclasses>
が返されました。 Fiddler2を使用してリクエストを監視すると、理由を説明する本文がなく、内部サーバーエラー(500)が発生していることがわかりました。私は自分の行動に何のエラーも投げられなかった。
チェック1:私の行動が確かにエラーなしでreturn collection.AsQueryable();
行に届いていることを確認しました。私は私のデータは、このコードを使用してエラーなしでJSONにシリアライズされたことを確認し(gは私のコレクションです):
var json = new JsonMediaTypeFormatter();
json.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
ObjectContent<IEnumerable<Model.MenuGroup>> responseContent = new ObjectContent<IEnumerable<Model.MenuGroup>>(g, json);
MemoryStream ms = new MemoryStream();
responseContent.CopyToAsync(ms).Wait();
ms.Position = 0;
var sr = new StreamReader(ms);
var str = sr.ReadToEnd();
これも働いていたそれは
チェック2でした。また、JSONをあまり使用していないことは間違いないとは思っていましたが、XMLフォーマッタを使ってテストしました。
チェック3:有効.Net Frameworkデバッグ。今度は、エラーが発生した(HttpApplication.cs)VS 2012がそれを捕まえました。
マイエラー:これらの属性とプロパティをマークしたにも関わらず
、
[XmlIgnore]
[IgnoreDataMember]
[JsonIgnore]
ネットソースは私の特性の一つでgetを呼んでいました。キャッチは、書き込み専用のプロパティでした。私は単に
get { return null; }
を追加して問題を解決しました。
私はおそらく最初にチェック3を済ませておいたはずですが、このエラーの以前の経験では、通常、オブジェクトをシリアル化しようとするとエラーが表示されていました。正しくエラーが解決されました。
あなたはそれを把握することができたことをうれしいです。答えとしてそれを解決した小切手を書いてください。 :) –
http://stackoverflow.com/questions/10944938/asp-net-web-api-non-descriptive-500-internal-server-error/34352049#34352049が役に立ちます。 – GGleGrand