【发布时间】:2011-07-13 19:05:59
【问题描述】:
获取用户操作
[HttpGet]
[ActionName("Index")]
public ActionResult Get(int id)
{
User u = UserCore.GetUser(id);
if (u == null)
return Content("user not found", "text/plain");
return new XmlResult(u);
}
UserCore.GetUser
public static User GetUser(int UserID)
{
using (PanamaDataContext db = new PanamaDataContext())
{
return (from u in db.Users where u.UserID == UserID select u).FirstOrDefault();
}
}
路线
routes.MapRoute(
"GetUser",
"user/{id}",
new { controller = "Users", action = "Index" }
);
最后是测试网址
/user/9000 按预期返回“未找到用户”(当前不存在)
/user/75(实际上存在于数据库中)但是返回:
无法访问已处置的对象。对象名称:'DataContext 已访问 处理后。'。
[ObjectDisposedException:无法访问已处置的对象。目的 name: '在 Dispose 后访问的 DataContext。'。]
System.Data.Linq.DataContext.GetTable(类型类型) +1020550
System.Data.Linq.CommonDataServices.GetDataMemberQuery(MetaDataMember 成员,Expression[] keyValues) +120
System.Data.Linq.DeferredSourceFactory1.ExecuteKeyQuery(Object[] keyValues) +2581.Execute(对象实例) +928 System.Data.Linq.DeferredSource.GetEnumerator() +53
System.Data.Linq.DeferredSourceFactory
System.Data.Linq.EntitySet1.Load() +1121.get_Count() +9
System.Data.Linq.EntitySet
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterUser.Write14_User(字符串 n, String ns, User o, Boolean isNullable, Boolean needType) +5060
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterUser.Write15_User(对象 o) +144[InvalidOperationException: 生成 XML 时出错 文件。]
System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, 对象 o、XmlSerializerNamespaces 命名空间、字符串 encodingStyle、 字符串 id) +646
System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter、Object o、XmlSerializerNamespaces 命名空间)+72
System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, 对象 o) +10 ...
我假设这是因为引用的对象不再存在,但我该怎么办?不知何故复制从 DataContext 返回的对象?
无论哪种方式,它都应该返回 XML 而不是那个错误。
【问题讨论】:
标签: asp.net-mvc datacontext dispose