C# 错误HRESULT E_创建Exchange邮箱(CDOEXM.IMailboxStore.CreateMailbox)时失败

C# 错误HRESULT E_创建Exchange邮箱(CDOEXM.IMailboxStore.CreateMailbox)时失败,c#,.net,active-directory,exchange-server,C#,.net,Active Directory,Exchange Server,我正在尝试自动化为广告用户创建Exchange邮箱的过程,但遇到了一个问题。调用CreateMailbox方法时,我收到一个错误:调用COM组件返回了HRESULT E_FAIL。我已安装并引用了Exchange管理工具,正在使用模拟来获取权限 代码如下: ActiveDs.IADsUser adUser = (ActiveDs.IADsUser)user.NativeObject; adUser.AccountDisabled = !Active

我正在尝试自动化为广告用户创建Exchange邮箱的过程,但遇到了一个问题。调用CreateMailbox方法时,我收到一个错误:调用COM组件返回了HRESULT E_FAIL。我已安装并引用了Exchange管理工具,正在使用模拟来获取权限

代码如下:

            ActiveDs.IADsUser adUser = (ActiveDs.IADsUser)user.NativeObject;
            adUser.AccountDisabled = !Active;
            user.CommitChanges();

            //Set Password
            user.Invoke("SetPassword", Password);
            user.CommitChanges();            

            //Create Mailbox
            IMailboxStore mailbox;
            mailbox = (IMailboxStore)adUser;
            mailbox.CreateMailbox("LDAP://CN=StandardUsers,CN=StandardUsers,CN=InformationStore,CN=xxxxx," +
                "CN=Servers,CN=First Administrative Group,CN=Administrative Groups," +
                "CN=xxxxx Main,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=xxxxx,DC=com");             
            user.CommitChanges();

我最初的反应有点古怪;我完全误读了密码。您所拥有的与我们在2003年Exch期间的生产工作类似。我们从一个web服务调用了该代码,该web服务作为在AD和Exchange中具有管理员权限的帐户运行

无论如何,这就是MSDN现在所说的:


重要信息:由于多跳身份验证问题以及在多线程运行时环境中观察到的意外结果,Microsoft®不支持在Microsoft ASP.NET页面、ASP网页或Web服务中使用CDO for Exchange Management CDOEXM。要创建使用CDOEXM功能的基于Web的Microsoft Exchange管理应用程序,Microsoft建议将CDOEXM包装在分布式组件对象模型DCOM包中,并从应用程序中调用该包。

adUser是一个IADsUser对象,user是我理解的目录项,DirectoryEntry是围绕ADSI对象(在本例中为IADsUser)的.NET包装器。根据MSDN,DirectoryEntry的NativeObject属性:获取本机Active Directory服务接口ADSI对象。