【问题标题】:Can't access public folders root无法访问公共文件夹根目录
【发布时间】:2011-01-30 22:11:10
【问题描述】:

我最近使用 C# 编写了一个 .NET 控制台应用程序。其目的是读取特定文件夹中的电子邮件,解析它们以获取特定值并将它们保存到数据库中。

在我最初编写此代码时,我们的电子邮件系统是 Exchange 2003。但是,我知道我们很快就会升级到 Exchange 2010:因此,我构建的代码可以在这两种环境中工作。

但是,在迁移到 Exchange 2010 后,该应用程序出现故障。

该应用使用 EWS API for 2010 功能。当它尝试使用 ExchangeService 的 FindFolders 方法查找 publicfoldersroot 时,它会引发异常。代码如下:

ExchangeService service = new ExchangeService();
FindFoldersResults findRootFldrs;

service.UseDefaultCredentials = true;
service.AutodiscoverUrl("xxxxx@xxxx.xxx", delegate(string x) {
return true; });

FolderView fview = new FolderView(100);
fview.Traversal = FolderTraversal.Deep;

findRootFldrs = service.FindFolders(WellKnownFolderName.PublicFoldersRoot, 
fview);

例外:ErrorInvalidSchemaVersionForMailboxVersion,又名:

请求的邮箱不支持指定的RequestServerVersion

我尝试过:

  • 将 exchangeservice 设置为 2007(抛出异常:“发生内部服务器错误。操作失败。”)

  • 给自己最高级别的公共文件夹权限(无效)

  • 手动设置我的凭据(无效)

我可以在 Outlook 2007 中查看公用文件夹; publicfoldersroot 属性在智能感知中可用;该代码适用于本地文件夹(我可以解析我的收件箱)。

我目前的想法是,它是最近设置的 Exchange 2010 的设置:不幸的是,这并不是我真正的领域。异常告诉我它正在尝试使用以前版本的 Exchange。将其设置为 2007 只会导致代码因内部服务器错误而失败。

【问题讨论】:

    标签: c# .net exchangewebservices ews-managed-api exchange-server-2010


    【解决方案1】:

    旧帖子,但事实证明这是我的答案:http://technet.microsoft.com/en-us/library/bb629522.aspx

    本质上,用于连接 EWS 的帐户在邮箱数据库中有一个邮箱,其默认公用文件夹服务器仍然是 Exchange 2003。通过 EWS 枚举公用文件夹的任何和所有尝试都失败了。将其换成 2010 年的后端服务器立即解决了问题。

    【讨论】:

      【解决方案2】:
      【解决方案3】:

      改变这一行:

      ExchangeService service = new ExchangeService(); 
      

      到这样的事情:

      ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
      

      ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
      

      取决于您的版本。

      【讨论】:

        猜你喜欢
        • 2014-07-18
        • 2013-07-09
        • 1970-01-01
        • 1970-01-01
        • 2020-02-27
        • 2015-10-11
        • 2012-09-22
        • 1970-01-01
        • 2020-11-06
        相关资源
        最近更新 更多