C# WCF-接收HTTP响应时出错
我尝试从以下服务获取列表:C# WCF-接收HTTP响应时出错,c#,wcf,entity-framework,C#,Wcf,Entity Framework,我尝试从以下服务获取列表: static void Main(string[] args) { MyClient proxy = new MyClient(); List<X> l = proxy.Func(1).ToList(); } public List<X> Func(int NUM) { ProjectContext MyContext =
static void Main(string[] args)
{
MyClient proxy = new MyClient();
List<X> l = proxy.Func(1).ToList();
}
public List<X> Func(int NUM)
{
ProjectContext MyContext = new ProjectContext();
s = MyContext.X.ToList();
return s;
}
public class ProjectContext : DbContext
{
public ProjectContext ()
: base("name=ApplicationServices")
{
this.Configuration.ProxyCreationEnabled=false;
this.Configuration.LazyLoadingEnabled = false;
}
public DbSet<XX> X{ get; set; }
}
static void Main(字符串[]args)
{
MyClient proxy=新建MyClient();
List l=proxy.Func(1.ToList();
}
X是实体框架项目DLL中的类
我的服务功能如下所示:
static void Main(string[] args)
{
MyClient proxy = new MyClient();
List<X> l = proxy.Func(1).ToList();
}
public List<X> Func(int NUM)
{
ProjectContext MyContext = new ProjectContext();
s = MyContext.X.ToList();
return s;
}
public class ProjectContext : DbContext
{
public ProjectContext ()
: base("name=ApplicationServices")
{
this.Configuration.ProxyCreationEnabled=false;
this.Configuration.LazyLoadingEnabled = false;
}
public DbSet<XX> X{ get; set; }
}
公共列表函数(int NUM)
{
ProjectContext MyContext=新建ProjectContext();
s=MyContext.X.ToList();
返回s;
}
我的上下文定义如下:
static void Main(string[] args)
{
MyClient proxy = new MyClient();
List<X> l = proxy.Func(1).ToList();
}
public List<X> Func(int NUM)
{
ProjectContext MyContext = new ProjectContext();
s = MyContext.X.ToList();
return s;
}
public class ProjectContext : DbContext
{
public ProjectContext ()
: base("name=ApplicationServices")
{
this.Configuration.ProxyCreationEnabled=false;
this.Configuration.LazyLoadingEnabled = false;
}
public DbSet<XX> X{ get; set; }
}
公共类ProjectContext:DbContext
{
公共项目上下文()
:base(“名称=应用程序服务”)
{
this.Configuration.ProxyCreationEnabled=false;
this.Configuration.LazyLoadingEnabled=false;
}
公共数据库集X{get;set;}
}
我得到一个错误:
接收对XXX的HTTP响应时出错。这可能是由于服务端点绑定未使用HTTP协议造成的。这也可能是由于服务器中止了HTTP请求上下文(可能是由于服务关闭)。有关更多详细信息,请参阅服务器日志。我以前和你一样,也犯过同样的错误。 我已经解决了这个问题,通过创建一个数据契约来像这样声明类X
[DataContract]
public class StudentX
{ [DataMember]
public string studentId;
[DataMember]
public string studentName;
[DataMember]
public string studentBirthday;
public Studentx(string Id, string Name, string Birthday)
{
// TODO: Complete member initialization
studentId= Id;
studentName = Name;
studentBirthday= Birthday;
}
}
我认为你之所以会犯这个错误,是因为客户端不理解对象X,列表也不理解
问候我过去和你一样,也犯过同样的错误。 我已经解决了这个问题,通过创建一个数据契约来像这样声明类X
[DataContract]
public class StudentX
{ [DataMember]
public string studentId;
[DataMember]
public string studentName;
[DataMember]
public string studentBirthday;
public Studentx(string Id, string Name, string Birthday)
{
// TODO: Complete member initialization
studentId= Id;
studentName = Name;
studentBirthday= Birthday;
}
}
我认为你之所以会犯这个错误,是因为客户端不理解对象X,列表也不理解
关于异常可能是由于循环引用引起的。使用
IgnoreDataMember
属性标记实体中的导航属性,以便它们不参与序列化。异常可能是由于循环引用。使用IgnoreDataMember
属性标记实体中的导航属性,以便它们不参与序列化。请启用WCF日志记录以获取更多信息:正如Fabske所说,请启用loglistener并从中获取“真实”异常。我不明白应该如何使用它。请启用WCF日志记录以获得更多信息更多信息:正如Fabske所说,请启用loglistener并从那里获取“真实”异常。我不明白应该如何使用它。我认为我的问题在于对象ProjectContext,因为当我发送不来自ProjectContext的X类列表时OK@BuiAkinori虽然可以通过这种方式序列化字段,最好将它们设置为propertiespublicstringstudentid{get;set;}
在问题中,您可以看到我禁用了延迟加载我认为我的问题出在objectprojectcontext中,因为当我发送不来自ProjectContext的X类列表时OK@BuiAkinori虽然可以通过这种方式序列化字段,最好将它们设置为propertiespublicstringstudentid{get;set;}
在问题中,您可以看到我禁用了延迟加载什么是导航属性?上下文?假设您有Employee和Department类。Employee类包含Department类型的属性,Department包含Employee集合类型的属性。如果选择Employee类,则Department属性是导航属性。由于这两个类相互引用,如果您尝试序列化一个Employee实例,您将遇到一些麻烦。因此,我应该将IgnoreDataMember属性放在我在ef项目的Department中的Employee对象上?您可以在这两个类上进行装饰,但我主要在collectionWhat is Navigation properties中进行装饰?上下文?假设您有Employee和Department类。Employee类包含Department类型的属性,Department包含Employee集合类型的属性。如果选择Employee类,则Department属性是导航属性。由于这两个类相互引用,如果您尝试序列化一个Employee实例,您将遇到一些麻烦。因此,我应该将IgnoreDataMember属性放在我在ef项目的Department中的Employee对象上?您可以对这两个类进行修饰,但我主要在集合中进行修饰