在ASP中使用实体管理器的更好解决方案.网络请求
本文关键字:更好 解决方案 网络 请求 管理器 实体 ASP | 更新日期: 2023-09-27 18:10:58
在ASP中使用实体管理器的当前建议。. NET请求似乎只是将AuthorizedThreadID
属性设置为NULL
(参考文献1和2)。虽然这样做有效,但似乎正在关闭一个非常重要的"安全网"。虽然我非常努力地以线程安全的方式使用实体管理器,但它仍然很好地拥有该安全网,以防我弄错了……所以我宁愿不把它设置为NULL
。
在ASP。. NET世界中,仍然有一个大致单一的执行线程—只是当您进行异步工作时,实际的线程可能会发生变化。我可以想到一些可能的解决方案:
-
EntityManager.SafeThreadingCheck()
方法做了一些额外的魔术来支持ASP。网络请求。我能理解IdeaBlade可能不想这么做……这让我想到了第二个选择… -
EntityManager
为我提供了一些扩展点,以提供我自己的SafeThreadingCheck()
版本,在那里我可以实现特殊的魔力来验证实体管理器仍然"逻辑上"在请求线程上。我可能要在这里做一些奇怪的事情,但我不认为它会非常复杂。 我尝试使用其他扩展点来检测何时应该调用自己的
FancySafeThreadingCheck()
方法。这有一个缺点,我必须尝试挂钩到所有必要的地方,而现有的SafeThreadingCheck()
方法已经被调用(大概)从所有必要的地方在完全最好的时间。我可以理解这可能不是最高优先级的功能请求,但它似乎也不是太难(至少对于选项#2)。或者也许还有其他更好的解决方法?我的最终目标是避免关闭这个安全检查……
DevForce 7.2.4将包括在EntityManager上设置委托以提供自定义授权线程ID逻辑的功能。