我有一个包含一些字符串属性和一个“Exception”属性的类。 保存对象时,MongoDB中的所有字符串属性都是正常的,但异常部分属性是部分的。只有属性“_t”和“HResult”存在。
“Message”,“InnerException”,“StackTrace”等等发生了什么?
我可以将这样的对象保存到MongoDB吗?
我的班级:
public class TraceLogEntity: MongoRepository.Entity {
public string ClassName {
get;
set;
}
public Exception Exception {
get;
set;
}
public string MethodName {
get;
set;
}
}
MongoDB上的一块对象:
{
"_id": ObjectId("55560138c57b9957202cae5a"),
"CreatedAt": ISODate("2015-05-05T03:00:00Z"),
"UserLogin": "UserLogin 3",
"ClassName": "ClassName 3",
"Exception": {
"_t": "LogException",
"HelpLink": null,
"Source": null,
"HResult": -2146233088
},
"MethodName": "MethodName 3"
}
我正在使用MongoRepository:https://github.com/RobThree/MongoRepository
提前致谢!!
答案 0 :(得分:4)
.NET Exception类未标记为Serializable。这可能会影响您在MongoDB中获取Message,InnerException等的能力。 MongoRepository使用的JSON库无法从类中获取这些属性。
我要做的是将这些字段添加到TraceLogEntity类中,而不是使用Exception对象。所以它看起来像:
public class TraceLogEntity : MongoRepository.Entity
{
public string ClassName { get; set; }
public string Message { get; set; }
public string StackTrace { get; set; }
public TraceLogEntity InnerException { get; set; }
public string MethodName { get; set; }
}