DbContext 已被处置

2024-04-26

我使用 ASP.NET MVC 4 和 SQL Server 2008 开发了一个 Web 应用程序,我创建了 ContextManager 类,以便在所有页面中只有一个数据库上下文。

public static class ContextManager
{
    public static HotelContext Current
    {
        get
        {
            var key = "Hotel_" + HttpContext.Current.GetHashCode().ToString("x")
                      + Thread.CurrentContext.ContextID.ToString();
            var context = HttpContext.Current.Items[key] as HotelContext;
            if (context == null)
            {
                context = new HotelContext();
                HttpContext.Current.Items[key] = context;
            }
            return context;
        }
    }
}

它在大多数页面中都能正常工作,但在注册页面中出现问题,我的上下文因以下错误而被废弃:

该操作无法完成,因为 DbContext 已被释放。

public ActionResult Register ( RegisterModel model )
{
    if ( ModelState.IsValid )
    {
        // Attempt to register the user
        try
        {
            WebSecurity.CreateUserAndAccount( model.UserName, model.Password,
                                              new
                                               {
                                                      Email = model.Email,
                                                      IsActive = true,
                                                      Contact_Id = Contact.Unknown.Id
                                               } );

            //Add Contact for this User.
            var contact = new Contact { Firstname = model.FirstName, LastName = model.Lastname };
            _db.Contacts.Add( contact );
            var user = _db.Users.First( u => u.Username == model.UserName );
            user.Contact = contact;
            _db.SaveChanges();
            WebSecurity.Login( model.UserName, model.Password );

在线上_db.Contacts.Add( contact );我得到了例外。

但不使用 ContextManager 通过更改

HotelContext _db = ContextManager.Current;

into:

HotelContext _db = new HotelContext();

问题解决了。但我需要使用我自己的ContextManager。问题是什么?


您的上下文已被放置在其他地方(不在您显示的代码中),所以基本上当您从您的Register动作,它会抛出异常。

实际上,您不应该使用静态单例来访问您的上下文。实例化一个新的DbContext每个请求的实例. See C# 在多线程服务器中使用实体框架 https://stackoverflow.com/questions/9415955/c-sharp-working-with-entity-framework-in-a-multi-threaded-server/9416275#9416275

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DbContext 已被处置 的相关文章

  • 将整数四舍五入到最接近的 10 倍数[重复]

    这个问题在这里已经有答案了 我想弄清楚如何对价格进行四舍五入 双向 例如 Round down 43 becomes 40 143 becomes 140 1433 becomes 1430 Round up 43 becomes 50 1
  • 这个洗牌算法有什么问题吗?

    我一直在做一些休闲假期计算 我的迷你项目是模拟意大利游戏 tomboli 一个关键的组成部分是对以下过程的模拟 游戏由一名男子控制 他拿着一袋 90 个弹珠 编号为 1 到 90 他从袋中随机取出一颗弹珠 每次向玩家喊出弹珠编号 经过一番思
  • 从 proc/pid/cmdline 解析命令行参数

    我正在尝试解析命令行参数另一个程序 这是一个模拟器 在我的程序中使用system 命令和模拟器的pid 不幸的是同时使用文件读取和cat 输出格式不正确 所以我无法真正获取数据 cat在命令行上显示删除了空格的文件内容 整个字符串粘在一起
  • 将文件扩展名与应用程序关联

    我编写了一个编辑特定文件类型的程序 我想为用户提供在启动时将我的应用程序设置为该文件类型的默认编辑器的选项 因为我不需要安装程序 我尝试编写一个可重用的方法 通过向 HKEY CLASSES ROOT 添加一个键来为我关联一个文件 最好在任
  • 如何使构造函数只能由基类访问?

    如果我想要一个只能从子类访问的构造函数 我可以使用protected构造函数中的关键字 现在我想要相反的 我的子类应该有一个构造函数 该构造函数可以由其基类访问 但不能从任何其他类访问 这可能吗 这是我当前的代码 问题是子类有一个公共构造函
  • 相当于一个允许重复键的排序字典

    我需要一个数据结构 可以通过与对象关联的浮动键对对象进行排序 从低到低的在前 问题是键代表成本 所以经常有重复 我不关心这一点 因为如果两个具有相同的成本 我只会抓住第一个 因为它没有区别 问题是编译器抱怨 是否有一种数据结构的行为方式相同
  • 使用工作表作为数据源的 VSTO Excel 的简单示例

    我想我遇到了 最简单的答案是最难找到的答案 的情况 而且我还没有遇到过任何搜索能够以直接的方式给我这个答案 这是为了Excel 2010 and VS 2010在现有 VSTO C 项目中 我有一个 Excel 工作表 其中包含 4 列数据
  • 返回 ObjectResult 会导致 406 Not Acceptable

    在学习 Scott Allen 的 Pluralsight 课程 Asp net Core 1 0 基础知识 时 在 MVC 框架中的控制器 模块和 操作结果 部分中 我在 Index 操作方法上遇到了 406 Not Acceptable
  • 通知另一个线程数据可用的最快方法是什么?有什么替代旋转的方法吗?

    我的一个线程将数据写入循环缓冲区 另一个线程需要尽快处理该数据 我本来想写这么简单的spin 伪代码 while true while a i do nothing just keep checking over and over proc
  • 如何测试 PARTIAL 视图在 C# ASP .NET MVC 中呈现

    我有一个视图 它内部有部分视图渲染 div class partialViewDiv Html RenderPartial partial Model SomeModelProperty div 和一个返回此视图的控制器 public Ac
  • 如何找到 QDockWidget 标题栏的高度?

    我正在尝试找到 a 的高度QDockWidget标题栏 以便对自定义布局进行一些智能调整大小 但标题栏不是单独的小部件 它内置于停靠小部件的私有布局中 并且没有成员可以访问它 还有其他方法可以找到它的高度吗 是的 您可以使用以下命令找到标题
  • 策略模式的现实示例

    我一直在读关于OCP原理 http en wikipedia org wiki Open closed principle以及如何使用策略模式来实现这一目标 我打算尝试向几个人解释这一点 但我能想到的唯一例子是根据 订单 的状态使用不同的验
  • aspnet_Profiles 表中的 PropertyValuesString 和 PropertyValuesBinary 字段有何用途?

    我认为 PropertyValuesString 用于通常是这些类型对象的键值对的值部分 但是 如果您已经将值放入 PropertyValuesString 中 那么 PropertyValuesBinary 字段会出现在哪里呢 这两个字段
  • 列表框显示类名称而不是值

    我正在开发一个项目 其中用户应该向动物输入值 名称 年龄 性别等 并且用户输入的值应该显示在列表框中 这些类相互继承 以下是继承的工作原理 Animalclass 是所有类的父类 Mammal类继承自Animal class Dog类继承自
  • 如何修复 Delphi Prism ASP.NET 错误:“解析器错误消息:‘Oxygene’不是受支持的语言”

    我在 Delphi Prism 中编写了一个 ASP NET Web 应用程序 不是网站 在我的开发机器上一切正常 但是当我将其安装在测试服务器上时 出现以下错误 Server Error in MyApp Application Pars
  • C/C++ 特殊 CPU 功能的使用

    我很好奇 新的编译器是否使用了新 CPU 中内置的一些额外功能 例如 MMX SSE 3DNow 所以 我的意思是 在最初的 8086 中甚至没有 FPU 所以旧的编译器甚至不能使用它 但新的编译器可以 因为 FPU 是每个新 CPU 的一
  • 使用 STL 迭代器而不初始化它

    我想做这样的事情 container iterator it NULL switch eSomeEnum case Container1 it vecContainer1 begin break case Container2 it vec
  • 奇怪的 MSC 8.0 错误:“ESP 的值未在函数调用中正确保存...”

    我们最近尝试将一些 Visual Studio 项目分解为库 并且在测试项目中一切似乎都编译和构建得很好 其中一个库项目作为依赖项 然而 尝试运行该应用程序给我们带来了以下令人讨厌的运行时错误消息 运行时检查失败 0 ESP 的值未在函数调
  • C 警告函数调用中缺少标记

    这是我的警告 Missing sentinel in function call 我怎样才能删除它 我正在使用 linux 和 gcc 编译器 看来您可能没有终止数组声明NULL 如果没有 null 您可能会遇到一些内存怪异 因为运行时将不
  • C# 泛型中的通配符等效项

    假设我有一个通用类 如下所示 public class GeneralPropertyMap

随机推荐

  • java.lang.NoSuchMethodError: 'com.google.common.collect.ImmutableMap 尝试使用 Chromedriver 和 Maven 执行测试时出错

    我是硒测试的新手 目前正在使用 Maven 观看一些 YouTube 视频 今天 我尝试了一些代码并且工作正常 但是当访问一个商店页面并尝试搜索产品时 它给我 访问被拒绝 消息 于是我尝试了几种打开chrome而不是chromedriver
  • 根据 Web.config Transform 中的子节点值选择节点

    我的 Web 配置中有以下 XML 我想使用 web config 转换选择要删除的属性 但我想根据其中一个子元素的值选择要删除的元素 我的 web config 是这样的
  • 执行bash脚本时如何显示行号

    我有一个测试脚本 其中有很多命令并将生成大量输出 我使用set x or set v and set e 因此当发生错误时脚本将停止 但我还是很难定位到哪一行执行停止了 从而定位问题所在 有没有一种方法可以在每行执行之前输出脚本的行号 或者
  • 使用简单注入器进行方法级属性拦截

    借助 Unity 我能够快速添加基于属性的拦截 如下所示 public sealed class MyCacheAttribute HandlerAttribute ICallHandler public override ICallHan
  • 城堡单轨铁路和 ELMAH

    有人成功使用 Castle MonoRail 和 ELMAH 吗 我们使用许多 Resuces 向用户提供友好的错误消息 但如果我们这样做 异常永远不会到达 ELMAH 因为 MonoRail 救援会拦截它们 理想情况下 我们希望用户看到救
  • 为什么 (1 in [1,0] == True) 的计算结果为 False?

    当我在寻找答案时这个问题 https stackoverflow com questions 9201445 python best way to keep track of results from loop 我发现我不明白自己的答案 我
  • IE7 Z-Index 分层问题

    我隔离了 IE7 的一个小测试用例z indexbug 但不知道如何修复 我一直在玩z index整天 出什么问题了z index in IE7 测试CSS input border 1px solid 000 div border 1px
  • Python在Conda环境中,但在Windows虚拟环境中尚未激活

    我创建了一个Windows 10 Python虚拟环境 env3 7 3 当我打开在虚拟环境中激活的cmd窗口时 在虚拟环境中启动Python时收到以下警告消息 env3 7 3 C Users redex OneDrive Documen
  • 我应该不断地 open() 和 close() 我的 SQL 数据库还是让它保持打开状态?

    我正在创建一个使用 SQL 数据库来存储数据的应用程序 根据应用程序的设计方式 它将每 3 分钟左右更新一次新数据 具体取决于应用程序运行时的用户操作 在我看到的教程中 他们建议您在更改数据库后关闭数据库 就资源而言 这是 昂贵的 是否最好
  • 在 Angular-UI 模式中显示谷歌地图?

    尝试在 Angular UI 模式中加载简单的谷歌地图 然而没有运气 数据传递得很好 但在地图方面没有任何作用 请帮忙 modalInstance opened then function var mapOptions center new
  • 显示mysql中存储路径的图像

    我已将图像上传到文件夹中并将路径存储到 MySQL 数据库中 路径已存储 图像已成功插入文件夹 但我的问题是当我显示存储在数据库中的路径中的图像时 它没有显示 当我回显图像路径时 它会显示图像路径 我检查了浏览器设置 一切正常 这是我的代码
  • 如何正确处理自定义MapFunction中的错误?

    我已经实施了MapFunction对于我的 Apache Flink 流程 它正在解析传入元素并将其转换为其他格式 但有时会出现错误 即传入数据无效 我看到两种可能的处理方法 忽略无效元素 但似乎我无法忽略错误 因为对于任何传入元素 我必须
  • PDO在mysql性能中的作用

    最近我在浏览一篇博客 注意到有关在mysql中使用PDO的一些要点 它改变了我对PDO的看法 要点是 本机准备好的语句无法利用查询缓存 从而导致性能降低 本机准备好的语句无法执行某些类型的查询 例如 SHOW TABLES 本机准备好的语句
  • Aptana 3 是否提供与 Aptana 1.5.1 一样好的 PHP 插件?

    有人用过 Aptana 3 吗 它的 PHP 插件是否和 2 0 一样糟糕 这里仍然运行 Aptana 1 5 1 一切都是内置的 Aptana Studio 3 是一个很棒的工具 尽管从经验来看 在处理大型项目时会出现一些问题
  • 广播接收器未调用互联网连接检查

    我正在尝试制作一个简单的应用程序 它会在互联网连接发生变化时通知是否有可用的互联网连接 我在互联网上找到了一些解决方案并尝试实施它们 但不知何故它不起作用 我在清单文件中注册的广播接收器没有调用网络连接更改 Manifest
  • 带有 std::variant 或 union 包装器的通用接口

    这个问题与使用 std variant 强制使用通用接口 无需继承 https stackoverflow com questions 72434897 enforcing a common interface with stdvarian
  • python条件运算符中“and”和“&”的奇怪行为[重复]

    这个问题在这里已经有答案了 以下是使用 和 and 条件运算符尝试的不同场景及其结果 使用Python 2 7 使用 运算符 使用 与 运算符 想知道为什么两个条件运算符表现出不同的行为 用真实场景进行解释会很有帮助 提前致谢 is not
  • 如何为批量角色扮演游戏创建保存/加载命令?

    我正在制作一个基于文本的批量角色扮演游戏 RPG 最近才开始学习 我的 RPG 没有生命值之类的东西 它更像是故事类型的 RPG 基本上 你选择你想做的选项 然后继续故事 每个选项都可以改变结局 所以 我想知道是否有办法保存 RPG 中的
  • Windows 上 Matlab 64 位版本的免费 SCM [已关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当 Matlab 安装为 64 位版本时 它只能使用 64 位源代码控制系统 是否有免费的源代码控制系统
  • DbContext 已被处置

    我使用 ASP NET MVC 4 和 SQL Server 2008 开发了一个 Web 应用程序 我创建了 ContextManager 类 以便在所有页面中只有一个数据库上下文 public static class ContextM