簡體   English   中英

在Web應用程序中檢測到屬性的自引用循環

[英]Self referencing loop detected for property in Web Application

我正在嘗試將移動服務應用程序移植到Web應用程序。 為此,我創建了一個新的Web應用程序,並將相關的代碼從正常工作的移動服務復制到了我創建的新Web應用程序(使用移動應用程序模板)。
在新應用程序的Startup方法中,我有以下代碼:

 public partial class Startup
{
    public static void ConfigureMobileApp(IAppBuilder app)
    {
        HttpConfiguration config = new HttpConfiguration();

        new MobileAppConfiguration()
            .UseDefaultConfiguration()
            .ApplyTo(config);

        // Use Entity Framework Code First to create database tables based on your DbContext
        Database.SetInitializer(new MobileServiceInitializer());
        config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;


        config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Serialize;
        config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
        app.UseWebApi(config);
        MobileAppSettingsDictionary settings = config.GetMobileAppSettingsProvider().GetMobileAppSettings();
   }
}

config.Formatters是從原始應用程序復制的,該應用程序將實體及其子級返回到api控制器的json輸出。

在新的應用程序中,我必須將[MobileAppController]添加到我的api控制器中。 我從Web應用程序應用程序的控制器中收到以下錯誤:為屬性Teams檢測到自引用循環(模型具有Teams-> Players,並且玩家具有teamid)

基於以下詳細問題: 檢測到自引用循環-將數據從WebApi取回瀏覽器

上面的代碼應該可以在我的移動服務應用程序中正常工作。 Web服務應用程序似乎忽略了config.Formatters值,因為我嘗試了上述問題中的每個值,但仍然遇到相同的錯誤。
如果我將[JSON Ignore]屬性放在Child列表之前,那么我不會得到錯誤,但是也不會將孩子返回到json中。 如何獲得此Web應用程序以接受格式值?

謝謝您的寶貴意見。 謝謝@dbc指出我這個問題。 我花了三天時間才找到,卻沒有找到。 顯然,我是正確的,移動應用程序忽略了json格式化程序。 您讓我到這篇文章[json net error]。 在DTO用最少的代碼解決問題之前,添加屬性[JsonObject(IsReference = true)]。 [json凈錯誤]:stackoverflow.com/questions/7397207/…– Haim Katz 7月24日13:41

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM