2008-09-29 61 views
3

我们需要从Asp.Net远程创建一个Exchange 2007发布列表。如何使用.NET在GAL内部创建Exchange分发列表?

附近,我可以告诉,在GAL中创建通讯组列表的唯一方法是通过交换管理工具。没有在我们的Web服务器上安装这个,有什么方法可以远程创建分发列表?有一些第三方组件允许您创建个人通讯组列表,但这些组件仅存在于用户联系人文件夹中,并且不适用于公司内的所有用户。

理想情况下,会有某种Web服务调用交换或我们可以使用的API。 Exchange SDK提供了管理Exchange数据(例如电子邮件,联系人,日历等)的功能。似乎没有Exchange管理API。

看起来分布列表作为具有特殊Exchange属性的组对象存储在AD中,但似乎没有关于它们应该如何工作的任何文档。

编辑:我们可以逆向工程Exchange与AD做的事情,但我担心的是,使用Exchange的下一个服务包,这将全部中断。

是否有API可用于在不通过Exchange的情况下管理Active Directory中的通讯组列表?

回答

1

寻找LDAP.NET,我没有它的方便,但我已经做到了,它在当时运行良好。

编辑:我应该添加LDAP是轻量级目录访问协议。

此外,我找不到LDAP.NET(我很好奇,去看看),现在看起来有一个内置的System.DirectoryServices命名空间为你做。

http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/729d1214-37f5-4330-9208-bc4d9d695ad0

+0

我知道LDAP和其他AD apis,但没有太多关于Exchange如何使用AD的文档。我们可以对Exchange的工作进行逆向工程,但没有文档,我担心我们的代码会与下一个Exchange服务包断裂。 – Darren 2008-09-29 20:16:59

1

我们与邮件使编程创建公共文件夹,并设置在Active Directory中的交换系统对象的msExchHideFromAddressLists属性需要一个类似的问题...

using (DirectoryEntry LDAPConnection = new DirectoryEntry("LDAP://OURDOMAIN/CN=" + name+ ",CN=Microsoft Exchange System Objects,DC=ourdomain,DC=com")) 
{ 
    LDAPConnection.AuthenticationType = AuthenticationTypes.Secure; 
    LDAPConnection.Properties["msExchHideFromAddressLists"].Value = false; 
    LDAPConnection.CommitChanges(); 
} 

PS。请确保任何DirectoryEntries已妥善处置,否则在GC启动之前可能会耗尽连接,最终不得不重新启动服务器以清除它们。