.net - Active Directory 事务感知吗?

标签 .net active-directory transactions msdtc

简单的问题,但我在任何地方都找不到答案:Active Directory 事务感知吗?

换句话说,是否会回滚以下更改(因为我没有调用 scope.Complete() ):

using (var scope = new TransactionScope())
{
    DirectoryEntry entry = ...;
    entry.Properties["givenName"].Value = "New Given Name";
    entry.CommitChanges();
}

如果没有,是否有可能以某种方式启用它?现在我有执行数据库更新和相应的 AD 更新的代码,如果 AD 更新以某种方式失败,我有补偿逻辑。该解决方案远非最佳。

亲切的问候,
罗纳德·维尔登伯格

最佳答案

简短的回答是——不。 ActiveDirectory 本质上是一个 LDAP 实现(有一些花哨的扩展,但它的核心仍然是 LDAP)。 LDAP 协议(protocol)和规范都没有事务的概念,所以这确实是不可能的。

可以在客户端模拟事务,但您必须自己做或使用 Spring,我相信它会为您做这件事 - 显然这不像您期望的服务器端事务那样安全数据库。关于 Spring 的注释 - 我不完全确定 Spring.NET 是否支持 LDAP 的“事务”,但它们在 Spring 的 Java 实现中有类似的东西。可能值得一看。

通过阅读有关 CommitChanges 方法的文档,它只是说它将您的更改发送到服务器 - 如果它没有说明它们是事务安全的,我会假设它们不是。

一些随机的想法——我猜微软可能会在 ActiveDirectory 上添加这样的东西(因为它不仅仅是 LDAP),但如果他们还没有的话,他们可能不会。

关于.net - Active Directory 事务感知吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1244985/

相关文章:

php - 在 PHP 中显示来自 Active Directory 的缩略图

php - 计算每个用户 ID 的交易金额

java - Hibernate 刷新速度不够快,无法捕获数据库异常

c++ - 清除任何交易

.net - 当我使用实时应用保存对 web.config 的更改时会发生什么?

.net - WPF:在模态窗口中以 MVVM 方式使用 RoutedCommand

.NET 基准测试框架

Python-ldap 可以从 python 控制台连接到事件目录,但不能连接到应用程序

c# - 如何将列表从 aspx 传递到 javascript?

c# - 如何从事件目录中转储用户?