问题标签 [session-per-request]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc-3 - StructureMap HttpContextScoped 是必要的吗?
我在 的教程中看到了如下代码EF code first
,MVC
并StructureMap
创建了一个Context Per Request
模式:
FirstEntity
, SecondEntity
and ... 都需要IunitOfWork
在他们的构造函数中。
如您所见,它仅HttpContextScoped()
用于Context
其他人,并且在EndRequest
它调用的情况下ReleaseAndDisposeAllHttpScopedObjects()
。
1-这是正确的方法吗?
2-我应该将 HttpContextScoped() 用于所有其他Service layer Interfaces
还是不只是用于IUnitOfWork
?例如
或者
3-ReleaseAndDisposeAllHttpScopedObjects()
处置所有实例还是仅仅处置Context
?
nhibernate - 每个请求的 nHibernate 会话和异常管理
我有一个类似的场景: Asp.NET MVC 4 website using nHibernate Session Per Request。使用 Ninject 将会话注入到具有 Get 和 Save 方法的存储库中。
有很多文章谈论 Session Per Request 并说这是在 Web 应用程序上做事的方式。
但是我在实现这样的逻辑时遇到了问题:
我想通过一条消息向用户展示我的观点。但我还必须刷新生成的网页,所以我还必须从数据库中读取一些信息。
根据 nHibernate 文档,必须丢弃带有异常的会话Documentation Here
但我在这里找不到任何关于最佳方式的文章。
这种情况的最佳方法是什么?我将不得不向我的存储库对象注入一个新的会话?
谢谢。
c# - 每个请求的会话 MVC 应用程序的 NHibernate 问题
我编写了一个使用 NHibernate 作为 ORM 的 C# MVC 3,并且在大多数页面加载时都抛出了一些奇怪的异常。它们似乎主要与封闭会话等有关,我已经检查了大多数常见问题,但发现几乎没有帮助。一些例外情况包括:
我为异常之墙道歉,我怀疑它们是相关的,但代码中可能存在另一个错误,也可能导致一两个错误。我不喜欢对这些东西使用随机这个词,但我似乎无法追踪调用它们的任何特定代码行,它们似乎只是出现在与 ISession 对象相关的代码行中。我什至在 Global.asax 文件中的 BeginTranscation 方法上抛出了“会话已关闭”异常。
应用程序使用 hibernate.cfg.xml 中 current_session_context_class 的 web 选项。
我怀疑它与我的会话管理代码有关。该网站通常会同时加载大约 10 个 AJAX 请求,当同时加载多个页面时,错误似乎更频繁地发生。有两个会话工厂,一个用于每个正在使用的数据库。
这是我相关的 Global.asax 代码:
我查看了 NHibernate profiler 中运行的页面。有时会话不是以 BeginTranscation 开始的,有时它们不是 Committed,有时两者都不是;最令人费解的是,有时它们启动了三遍,但没有完成。
对 ISession 对象的任何调用都通过此代码进行管理(每个工厂都有一个):
在整个应用程序中没有对 BeginTransaction 或 Commit 的调用,除非它们被刷新、提交、会话处理,然后按照上面的代码重新打开。你们能对此有所了解的任何线索将不胜感激!
c# - 如何在每个请求的会话中验证单例类
我有一个配置类,用于基础中的第一个用户访问,如果 firebird 或 oracle 使用它来放置设置和服务几乎是必需的,设置保存在加密文件中,每次我启动我的应用程序时检查这些设置是,到目前为止,一切都很好。
但是我对所有请求都使用了一个会话,我决定改变存在同步问题的问题,然后决定实现每个请求的会话,但是每次开始我的应用程序时都会创建一个会话并且需要创建会话在单例类中创建的服务数据。一种实现方法是在 Global.asax 中创建我的会话之前进行验证。
这是我的会话管理器。
但是,对于它激怒的每个请求都进行验证,这对我来说是对单例类进行验证的更好方法吗?
c# - 从 Application_Error 重定向页面时出错
我正在尝试进行重定向,我有一个单例类,它是我的配置类,获取有关此的信息并使用我的连接字符串,我将这些数据保存在加密文件中,我正在使用每个请求的会话,然后在安装之前我需要检查会话配置文件,如果没有我抛出异常。
如果有,我必须重定向到作为单例类的设置页面。
但是我遇到了这个重定向的问题,浏览器中的链接正在改变,但我有一个重定向循环,已经尝试清除 cookie 并启用外部站点的选项。
有人能帮我吗?
c# - 在 NHibernate 中使用 Merge() 时出错:具有相同标识符的不同对象
我正在使用 FluentNHibernate,当我发布帖子时出现此错误。
具有相同标识符值的不同对象已与会话关联
那是我的控制器:
这就是我在 RepositoryBase 上的添加:
我看到的所有使用 Merge() 的问题都会导致 NHibernate 尝试从用户那里保存一个 ID,因为它已经在会话中,但是我使用 Merge() 时遇到了同样的错误。而且我也在使用每个请求的会话。我已经尝试在这个文档上做同样的事情。有人知道我该如何解决?
asp.net-mvc - NHibernate/NInject - 用户提交表单后不会立即执行更新
我在一个使用以下框架的项目中
- ASP.NET MVC4
- NHibernate 作为 ORM
- NInject 作为 IoC 来管理依赖项并执行 DI
问题是用户更新实体并提交表单后,他必须等待大约 20 秒才能加载正确的数据。这次也将更改保存到数据库(SQL Server)中
我们在 RequestScope 中管理了 NHibernate ISession 对象,但发现当 MVC 从编辑重定向到列表屏幕时,没有调用 Deactivation 方法。
下面是 NHibernate 的 NInject 模块的主要部分:
加载方法:
感谢您的任何建议!
nhibernate - NancyFX + .NET Core + NHibernate
我在 .NET Core 2 上创建了一个基于 NancyFx 的小型 API。它使用 AutoFac 作为 IOC 容器和 NHibernate 5.3 来访问数据库。
我遇到了线程和CurrentSessionContext
. 基本上当我进入AfterRequest
管道时,我通常在另一个线程上,然后CurrentSessionContext
不知道我在请求开始时所做的绑定。
我尝试WebSessionContext
改用 ,但由于我使用的是堆栈,所以没有HttpContext.Current
. 要访问,HttpContext
您必须在需要的地方注入Microsoft.AspNetCore.Http.IHttpContextAccessor
。
我怎样才能告诉 NHibernate 以某种方式绑定到我自己的上下文,所以我的会话不会在BeforeRequest
and之间丢失AfterRequest
?
为了便于在事务中包装我的数据访问,我在我的 Nancy Bootstrapper 中添加了以下内容:
我的 hibernate.cfg.xml 看起来像这样:
我Sessionfactory
像这样连接起来:
java - Hibernate:事务中悲观锁的范围
我正在为游戏服务器使用 Hibernate for ORM,并且刚刚从每个工作单元的会话/事务切换到每个请求的会话/事务。
由于多个事务可能相互冲突,我使用悲观锁定。问题是我经常遇到死锁。现在我的问题是是否可以在特定实体实例被锁定的事务中显式定义范围,或者在指定锁定模式之后实例是否被锁定直到我提交事务?
如果后者成立,我如何避免每个请求环境中的会话事务中的死锁如果我不能任意安排锁定数据库中资源的方法的方法调用?