最近、EF4 を使用して WCF レストフル サービスをセットアップしました。XML形式の応答を返すと、すべてうまくいきました。ただし、JSON に関しては、504 エラーが発生しました。json データを返せない、WCF Resful Service .NET 4.0
Service Trace Viewer を使用してさらに掘り下げると、次のエラーが見つかりました。
'タイプ 'xxx.DataEntity.AppView' は、IsReference 設定が 'True' であるため、JSON にシリアル化できません。参照を表す標準化された形式がないため、JSON 形式は参照をサポートしません。シリアル化を有効にするには、型または型の適切な親クラスで IsReference 設定を無効にします。
「AppView」は、ストア プロシージャから EF4 によって生成された複合オブジェクト クラスです。私は IsReference を無効にする方法をグーグルでかなりの時間を費やしていますが、これまでのところほとんど結果がありません。
誰でも?解決策はありますか?
前もって感謝します
コード:
[OperationContract]
[WebInvoke(Method = "GET",
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "App/{id}/{format}")]
AppView FuncDetail(string id, string format);
public AppView FuncDetail(string id, string format)
{
SetResponseFormat(format);
return AppSvcs.GetById(id);
}
private void SetResponseFormat(string format)
{
if (format.ToLower() == "json")
{
ResponseContext.Format = WebMessageFormat.Json;
}
else
{
ResponseContext.Format = WebMessageFormat.Xml;
}
}