Customer
単純なプロパティ (Name
など)だけを持つクラスがある場合、CustomersController
から派生する を作成ApiController
し、 URL を使用して Customer オブジェクトを照会できます/api/customers
。
同様に、Order
単純なプロパティ ( Description
、Amount
) を持つクラスがある場合、 を作成OrdersController
して同じ方法でアクセスできます。
ただし、それに関連付けられているCustomer
をリストするクラスにプロパティを追加すると、次のようになります。Order
Customer
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
// ...
public virtual ICollection<Order> Orders { get; set; }
}
...次に、を使用してクエリを実行しようとすると/api/customers
、500 サーバー エラーが発生します。内にブレークポイントを配置するCustomersController
と、正しいメソッドが呼び出され、値を返そうとすることがわかります。ただし、フレームワークの根幹のどこかで、それを HTTP 応答に変換できません。
情報をシリアル化しOrders
たり、HTTP 応答用にパッケージ化したりできないようですが、これを実現するために何をする必要があるかわかりません。それとも、WebApi が複雑なオブジェクトを返すように設計されていないという単純なケースですか?
更新:私のコードはここにあります: https ://gist.github.com/43ed2f29f8adfb44cef6
更新 2 : エラーに関する詳細情報:
Server error The website encountered an error while retrieving http://localhost:1031/api/customers/6.
メンテナンスのために停止しているか、正しく構成されていない可能性があります。いくつかの提案があります: この Web ページを後でリロードします。HTTP エラー 500 (内部サーバー エラー): サーバーが要求を実行しようとしているときに、予期しない状況が発生しました。
Intellitrace ログには次のように表示されます: http://i.imgur.com/iHxJl.png
[Intellitrace ウィンドウでテキストをコピーできないとは信じられません。そのため、実際に画面を印刷して画像をアップロードする必要がありました。これは何年ですか?]