Asp.net mvc 4 Fluent Nhibernate和Web api错误

Asp.net mvc 4 Fluent Nhibernate和Web api错误,asp.net-mvc-4,asp.net-web-api,fluent-nhibernate,mapping,odata,Asp.net Mvc 4,Asp.net Web Api,Fluent Nhibernate,Mapping,Odata,我有个错误。您可以在下面看到我的代码和异常消息 用户类 public class User { public virtual int ID { get; set; } public virtual string UserName { get; set; } public virtual string PassWord { get; set; } public virtual DateTime AddedDate { get

我有个错误。您可以在下面看到我的代码和异常消息

用户类

public class User 
    {
        public virtual int ID { get; set; }
        public virtual string UserName { get; set; }
        public virtual string PassWord { get; set; }
        public virtual DateTime AddedDate { get; set; }          
        public virtual UserGroup UserGroup { get; set; }

    }
费用收入类别

public class expenseincomes
    {
        public virtual int ID { get; set; }
        public virtual int ExpIncTypeID { get; set; }
        public virtual decimal Amount { get; set; }
        public virtual User User { get; set; }

    }
地图类

public class UserMap : ClassMap<User>
    {
       public UserMap() {
           Table("TUsers");
           Id(x => x.ID);
           Map(x => x.AddedDate);              
           Map(x => x.PassWord);
           Map(x => x.UserName);

       }

    }

  public class expenseincomesMap : ClassMap<expenseincomes>
    {
        public expenseincomesMap()
        {
           Table("texpenseincomes");
           Id(x => x.ID);
           Map(x => x.Amount);
           Map(x=>x.ExpIncTypeID);
           References(x => x.User).Column("UserID").Cascade.All();
       }
    }
当我打电话时[http://localhost:2711/odata/expenseincomes/get]我收到这个异常消息

"$id":"1","Message":"An error has occurred.","ExceptionMessage":"The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.","ExceptionType":"System.InvalidOperationException","StackTrace":null,"InnerException":{"$id":"2","Message":"An error has occurred.","ExceptionMessage":"Cannot serialize a Session while connected","ExceptionType":"System.InvalidOperationException","StackTrace":"   at NHibernate.Impl.SessionImpl.System.Runtime.Serialization.ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeISerializable(JsonWriter writer, ISerializable value, JsonISerializableContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeISerializable(JsonWriter writer, ISerializable value, JsonISerializableContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IWrappedCollection values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value)\r\n   at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value)\r\n   at Newtonsoft.Json.JsonSerializer.Serialize(JsonWriter jsonWriter, Object value)\r\n   at System.Net.Http.Formatting.JsonMediaTypeFormatter.<>c__DisplayClassd.<WriteToStreamAsync>b__c()\r\n   at System.Threading.Tasks.TaskHelpers.RunSynchronously(Action action, CancellationToken token)"}}
“$id”:“1”,“Message”:“发生了错误”,“ExceptionMessage”:“ObjectContent`1”类型未能序列化内容类型“application/json;charset=utf-8”的响应正文。”,“ExceptionType”:“System.invalidooperationexception”,“StackTrace”:null,“InnerException”:{“$id”:“2”,“Message”:“发生了错误”,“ExceptionMessage”:“连接时无法序列化会话”,“ExceptionType:”System.InvalidOperationException“,”StackTrace:”位于NHibernate.Impl.SessionImpl.System.Runtime.Serialization.ISerializable.GetObjectData(SerializationInfo,StreamingContext上下文)\r\n位于Newtonsoft.Json.Serialization.JSONSerializationRinterWriter.Serializable(JsonWriter编写器,ISerializable值,JSONSerializableContract,JsonProperty成员,JsonContainerContract collectionContract,JsonProperty containerProperty)\r\n位于Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialization值(JsonWriter编写器,对象值,JsonContract valueContract,JsonProperty成员,JsonContainerContract containerContract,JsonProperty containerProperty)\r\n位于Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter编写器,对象值,JsonObjectContract合约,JsonProperty成员,JsonContainerContract collectionContract,JsonProperty containerProperty)\r\n位于Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.serializationValue(JsonWriter编写器,对象值,JsonContract valueContract,JsonProperty成员,JsonContainerContract containerContract,JsonProperty containerProperty)\r\n位于Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializerSerializable(JsonWriter编写器,ISerializable值,JSONSerializableContract,JsonProperty成员,JsonContainerContract collectionContract,JsonProperty containerProperty)\r\n位于Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialization值(JsonWriter编写器,对象值,JsonContract valueContract,JsonProperty成员,JsonContainerContract containerContract,JsonProperty containerProperty)\r\n位于Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter编写器,对象值,JsonObjectContract合约,JsonProperty成员,JsonContainerContract collectionContract,JsonProperty containerProperty)\r\n位于Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.serializationValue(JsonWriter编写器,对象值,JsonContract valueContract,JsonProperty成员,JsonContainerContract containerContract,JsonProperty containerProperty)\r\n位于Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter编写器、IWRAPPED集合值、JsonArrayContract合约、JsonProperty成员、JsonContainerContract集合合约、JsonProperty容器属性)\r\n位于Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.serializationValue(JsonWriter编写器,对象值,JsonContract valueContract,JsonProperty成员,JsonContainerContract containerContract,JsonProperty containerProperty)\r\n位于Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter JsonWriter,对象值)\r\n位于Newtonsoft.Json.JsonSerializer.serializer\n(JsonWriter JsonWriter,对象值)\r\n位于Newtonsoft.Json.JsonSerializer.Serialize(JsonWriter JsonWriter,对象值)\r\n位于System.Net.Http.Formatting.JsonMediaTypeFormatter.c\u DisplayClassd.b\u c()\r\n位于System.Threading.Tasks.TaskHelpers.RunSynchronously(操作,取消令牌)})

但是URL=>没有问题。[http://localhost:2711/odata/Users/get]例外情况的重要部分是:

"Cannot serialize a Session while connected"
这是一个很好的例子

尝试添加

json.SerializerSettings.ContractResolver = new NHibernateContractResolver();
使用链接的答案中建议的实现来创建代码

json.SerializerSettings.ContractResolver = new NHibernateContractResolver();