.net操作Exchange的问题
1.我是用CDO连接Exchange2007,建立Exchange邮箱账户,但是操作始终不成功!对此我有两点怀疑。 其一是homeMDBURL设置不正确,希望熟悉的朋友帮忙解释下,写个完整的格式。其二是我的系统设置环境有问题。homeMDBURl的具体参数设置如下,我想做过的朋友都该知道具体的含义,不用我多解释了。至于服务器的环境是:Exchange server2007在一台机器上,.net程序部署在另外一台机器上,我现在利用下面得代码做Exchang邮箱创建始终提示服务器上无该对象,不知道.net操作Exchange需要什么样的环境配置,对我出现的异常可能是什么原因呢。
string strHomeMDBURL="LDAP://" + p_strDomainName + "/CN=Mailbox Store (" + p_strServerName + ")," +
"CN=First Storage Group,CN=InformationStore," +
"CN=" + p_strServerName + ",CN=Servers,CN=First Administrative Group," +
"CN=Administrative Groups,CN=First Organization," +
"CN=Microsoft Exchange,CN=Services,CN=Configuration," + p_strDCName;
MailBox.CreateMailbox(strHomeMDBURL); //此为创建邮箱账户可以用personclass 类或者已经设置的AD账户,程序执行到此提示服务器上无该对象.
为了测试代码的准确性,我又做了exchange连接的测试,使用的是下面的代码:
CDOEXM.IExchangeServer exchangeServer = new CDOEXM.ExchangeServerClass();
CDOEXM.IStorageGroup storageGroup = new CDOEXM.StorageGroupClass();
//连接到指定的Exchange数据源
string sourceURL = serverName+"."+GetDomain();
exchangeServer.DataSource.Open(sourceURL,null,ADODB.ConnectModeEnum.adModeRead,ADODB.RecordCreateOptionsEnum.adFailIfNotExists,ADODB.RecordOpenOptionsEnum.adOpenAsync,userName,password); //执行到此提示provider异常错误!!
据此我又疑惑了,不知道是我的系统环境问题还是什么其他的问题,因为我无法保证我的.net程序可以正常连接到exchange ,我的本意是通过这种方法可以获得Exchange服务器的第一个存储组,可是我的希望破灭了, 出现此类异常情况让我不知所错,因为我无法连接到我的exchange,希望个位朋友帮我诊断下,我目前遇到的问题是何种原因,我想对Exchange服务器的操作环境不至于如此复杂吧,网上涉及操作Exchange server2007的很少,大多是对Exchange server 2000和2003的,难道2007会有什么变化么,我不懂! 无论是从环境角度还是从代码角度我都知知甚少,我也曾把msdn上的原代码原封不动的copy过来做修改,可是遇到的问题还是一样的,有点抓狂了,特请熟悉的朋友们帮忙。 也为以后做这类程序的朋友们有所启发。谢谢!!
--------------------编程问答-------------------- 补充下msdn上的homeMDB格式:这里也会有不一样的,奇怪!!!!!!!!!!!!!
msdn上的homdMDB对Exchange存储参数的设置如下:
//中文版Exchange 2003邮箱存储路径字段
//string homeMDBUrl = "CN=邮箱存储("+machineName+"),CN=第一个存储组,CN=InformationStore,CN="+machineName;
//homeMDBUrl+=",CN=Servers,CN=第一个管理组,CN=Administrative Groups,CN=LeagueKing,CN=Microsoft Exchange,CN=Services,CN=Configuration,";
//homeMDBUrl+="DC=ExchangeTest,DC=Com";
--------------------编程问答-------------------- 把完整的异常贴出来 --------------------编程问答-------------------- System.Runtime.InteropServices.COMException (0x80072030): 在服务器上没有这样一个对象。 (异常来自 HRESULT:0x80072030)
在 CDOEXM.IMailboxStore.CreateMailbox(String HomeMDBURL)
在project.testover() 位置 C:\exchangetest.cs:行号 424
这是msdn上的例子抛出的异常同基于LDAP的访问抛的异常一样 --------------------编程问答-------------------- System.Runtime.InteropServices.COMException (0x80072032): 指定了一个无效的 dn 语法。
设备: Win32
ID 号: 80072032
Microsoft CDO for Exchange Management
在 CDOEXM.IDataSource2.Open(String SourceURL, Object ActiveConnection, ConnectModeEnum Mode, RecordCreateOptionsEnum CreateOptions, RecordOpenOptionsEnum Options, String UserName, String Password)
在 project.GetFirstStoreMDB(String serverName, String userName, String password) 位置 C:test.cs:行号 731
这个是对数据源连接的时候报的:就是下面这句
ExchangeServer.DataSource.Open(serverName,null,ADODB.ConnectModeEnum.adModeRead,ADODB.RecordCreateOptionsEnum.adFailIfNotExists,ADODB.RecordOpenOptionsEnum.adOpenAsync,userName,password);
--------------------编程问答-------------------- asp.net权限不够,模拟windows用户操作权限
<identity impersonate="true" userName="系统用户名" password="系统密码" />
--------------------编程问答-------------------- 您好:我用的是<identity impersonate="true"/>当我指定用的时候无法登陆,是权限问题,我就指定了个默认的模拟帐户,这样也应该可以吧
可是我同样看到了错误:
System.Runtime.InteropServices.COMException (0x80072030): 在服务器上没有这样一个对象。 (异常来自 HRESULT:0x80072030)
在 CDOEXM.IMailboxStore.CreateMailbox(String HomeMDBURL)
在
采用的是这样的访问homedb不知道错在哪里,我不太明白您要设置模拟帐户的目的,这样真的可以解决问题么?? --------------------编程问答-------------------- 顶一下,把我的帖子顶成强帖!!! --------------------编程问答-------------------- 为避免帐户权限问题我在winform程序上做了调试,如下异常:
System.Runtime.InteropServices.COMException (0x80040E21): 多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。
--------------------编程问答-------------------- 看不懂啊。最近搞exchange2003,恼火,不会。
补充:.NET技术 , ASP.NET