Outlook Interop Exception HRESULT:0xCA140115

时间:2017-07-26 15:18:42

标签: c# outlook office-interop

我有一些非常基本的代码似乎适用于大多数人,但至少有一个工作站在运行这几行代码时抛出此HRESULT代码:

Outlook.Application _OutlookInstance = new Outlook.Application();
Outlook.Stores stores = _OutlookInstance.Session.Stores;

知道HRESULT代码0xCA140115是什么或意味着什么?我无法在MSDN上的任何地方找到它......

遇到问题的工作站位于远程呼叫中心位置,因此我无法立即进行测试/调试,或轻松查看此工作站与其他工作站的具体区别。我想在同一个呼叫中心可能会有更多的工作站出现错误,但是这段代码仍处于测试阶段。

1 个答案:

答案 0 :(得分:0)

很抱歉延迟,但我能够通过几次迭代测试并找出问题所在。首先,我原来的帖子不正确。代码流使得看起来错误发生在这两个初始行中,但它实际上发生了一段时间,当我在商店中循环时,像这样:

Outlook.Stores stores = _OutlookInstance.Session.Stores;
foreach(Outlook.Store store in stores) // <----- THIS LINE
{
  ...
}

每次用户运行时,他都会得到一个不同的HRESULT错误代码:

0xCA140115

0xAF64011D

0xC1F4011D

0xC834011D

唯一一致的因素是中间的“4011”。

当我提高日志记录时,我可以看到用户有18个邮箱,而foreach()循环正在通过前3个但是在4日失败。第四个邮箱是与另一个邮箱关联的“公共文件夹”存储,该邮箱以与其他邮箱不同的方式添加(它与需要不同身份验证的Outlook 365邮箱有关)。

所以基本上它最终是任何尝试甚至触摸特定邮箱/存储(包括设置的“存储”变量)都会导致该COM异常。

我能够通过数字索引循环遍历商店来解决这个问题,以便“store”的设置在我的try / catch块中,如下所示:

for(int i = 0; i < stores.Count; i++)
{
  try
  {
    Outlook.Store store = stores[i];
    ...
  }
  catch(Exception)
  {
    ...
  }
}

现在,当循环点击该特定商店时,我可以告诉它是Outlook说服务器不可用,而商店是一个仅限在线的商店,因此无法访问商店。

我仍然不确定为什么错误代码每次都会改变,但是你有它。