2012-08-24 11 views
6

私はこの問題を数日間解決しています(この問題を克服し、髪の毛を引っ張っている人のために修正されました)。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を済ませておいたはずですが、このエラーの以前の経験では、通常、オブジェクトをシリアル化しようとするとエラーが表示されていました。正しくエラーが解決されました。

+0

あなたはそれを把握することができたことをうれしいです。答えとしてそれを解決した小切手を書いてください。 :) –

+0

http://stackoverflow.com/questions/10944938/asp-net-web-api-non-descriptive-500-internal-server-error/34352049#34352049が役に立ちます。 – GGleGrand

答えて

6

どうすれば解決できますか。

有効.Net Frameworkデバッグ。ツール - >オプション - >デバッグ - >「.NET Frameworkソースステッピングを有効にする」

今回は、エラーが発生した(HttpApplication.csの)VS 2012がこれを検出しました。

関連する問題