0

我在应用程序中遇到麻烦。我有一个MVC应用程序查询数据库(和一些Web服务),并以JSON返回我的信息。在我的本地计算机上工作就像一个魅力,但是当我将其上传到网络服务器时,出现此错误:在网络服务器中序列化模型时出错

“在'System.Data.Objects.DataClasses.RelationshipManager'上从'_owner'获取值时出错。 (你可以看到整个错误页面中http://canedroid.com/mvc/api/requests/getlastcheckins

我尝试禁用代理和延迟加载有:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.Configuration.LazyLoadingEnabled = false; 
     base.Configuration.ProxyCreationEnabled = false; 
    } 

并没有任何反应。

型号:

namespace CaneDroid.MVCApp.Models 
{ 
public class CaneDroidContext : DbContext,ICaneDroidDataSource 
{ 
    public CaneDroidContext() 
     : base("DefaultConnection") 
    { 

    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.Configuration.LazyLoadingEnabled = false; 
     base.Configuration.ProxyCreationEnabled = false; 
    } 

    public DbSet<Checkin> mdlCheckins { get; set; } 
    public DbSet<configAndroid> configAndroid { get; set; } 


    IQueryable<Checkin> ICaneDroidDataSource.Checkins 
    { 
     get { return mdlCheckins; } 
    } 
} 

public class Checkin 
{ 

    public Checkin() 
    { 
     visto = false; 
    } 

    [Key,DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public virtual int Id { get; set; } 
    [Required] 
    public virtual string fsqCheckinId { get; set; } 
    public virtual string text { get; set; } 
    public virtual string usrId { get; set; } 
    public virtual string usrFrstName { get; set; } 
    public virtual string usrLstName { get; set; } 
    public virtual string venueId { get; set; } 
    public virtual string venueName { get; set; } 
    public virtual string venueAddress { get; set; } 
    public virtual string venueCrossStreet { get; set; } 
    public virtual string venueLat { get; set; } 
    public virtual string venueLng { get; set; } 
    public virtual string venueCity { get; set; } 
    public virtual bool visto { get; set; } 
} 

public class configAndroid 
{ 
    [Key, DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public virtual int Id { get; set; } 
    public string key { get; set; } 
    public bool value { get; set; } 
} 

}

动作控制器:

public R getLastCheckins() 
    { 
     var responseJson = R.getLastCheckins(db); 
     return responseJson; 
    } 

public static R getLastCheckins(CaneDroidContext db) 
    { 
     var cache = db.mdlCheckins.OrderByDescending(q => q.Id).Take(10); 
     return new R(cache, null, null, null, null, null); 
    } 

,我不知道还有什么能做些什么。

回答

1

没关系。我找到了解决方案。问题是Context变量。

private static CaneDroidContext db = new CaneDroidContext(); 

当我修改它并使其静态时,一切都开始正常工作。