在 Exchange Web 服务 (EWS) 中处理事件时识别项目类型

2024-02-23

我正在使用带有 EWS API 的流式通知。在事件处理程序中,我发现某个项目已被修改,但我尝试将修改后的项目绑定到电子邮件消息失败。错误信息具体是

服务(约会)返回的项目类型不兼容 与请求的项目类型(EmailMessage)。

似乎在尝试绑定项目之前必须有一种方法来识别项目类型,但我不确定那是什么。尝试时发生错误Bind,所以我不能简单地检查 null 。我可以求助于try/catch,但如果有更好的方法,更愿意正确执行此操作?

总结代码:

void streamingConnection_OnNotificationEvent(object sender, NotificationEventArgs args)
{
    foreach (NotificationEvent notificationEvent in args.Events)
    {
        ItemEvent itemEvent = notificationEvent as ItemEvent;
        if (itemEvent != null) HandleItemEvent(itemEvent);
    }
}

private void HandleItemEvent(ItemEvent itemEvent)
{
    switch (itemEvent.EventType)
    {
        case EventType.Modified:
            EmailMessage modifiedMessage = EmailMessage.Bind(this.ExchangeService, itemEvent.ItemId);
            // error occurs on Bind if the item type is not an EmailMessage (eg, an Appointment)
            break;
    }
}

看起来正确的绑定方法是使用通用的Item.Bind方法,然后检查该项目是否是EmailMessage类型。为了稳健地做到这一点(处理项目在绑定之前被移动的潜在问题),我将逻辑放入一个方法中,类似于下面:

private EmailMessage BindToEmailMessage(ItemId itemId)
{
    try
    {
        Item item = Item.Bind(this.ExchangeService, itemId);
        if (item is EmailMessage) return item as EmailMessage;
        else return null;
    }
    catch
    {
        return null;
    }
}

然后将我现有方法中的逻辑更改为

EmailMessage modifiedMessage = BindToEmailMessage(itemEvent.ItemId);
if (modifiedMessage != null) ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Exchange Web 服务 (EWS) 中处理事件时识别项目类型 的相关文章

  • InvalidOperationException - 对象当前正在其他地方使用 - 红十字

    我有一个 C 桌面应用程序 其中我连续创建的一个线程从源 实际上是一台数码相机 获取图像并将其放在 GUI 中的面板 panel Image img 上 这必须是另一个线程 如它是控件的代码隐藏 该应用程序可以工作 但在某些机器上 我会在随
  • 用于代数简化和求解的 C# 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 网络上有很多代数求解器和简化器 例如 algebra com 上不错的代数求解器和简化器 然而 我正在
  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • 为什么 int8_t 和用户通过 cin 输入显示奇怪的结果[重复]

    这个问题在这里已经有答案了 一小段代码让我发疯 但希望你能阻止我跳出窗外 看这里 include
  • 如何将 protobuf-net 与不可变值类型一起使用?

    假设我有一个像这样的不可变值类型 Serializable DataContract public struct MyValueType ISerializable private readonly int x private readon
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 当我们想要返回对象的引用时,为什么我们在赋值运算符中返回 *this 而通常(而不是 this)?

    我正在学习 C 和指针 我以为我理解了指针 直到我看到这个 一方面 asterix 运算符是解引用的 这意味着它返回值所指向的地址中的值 而与号 运算符则相反 它返回值存储的地址记忆 现在阅读有关赋值重载的内 容 它说 我们返回 this因
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 使用管道时,如果子进程数量大于处理器数量,进程是否会被阻塞?

    当子进程数量很大时 我的程序停止运行 我不知道问题是什么 但我猜子进程在运行时以某种方式被阻止 下面是该程序的主要工作流程 void function int process num int i initial variables for
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock

随机推荐

  • 为什么keras不允许以这种方式添加卷积层?

    下面的代码 from tensorflow import keras from keras layers import Conv2D model keras Sequential model add Conv2D 1 3 3 padding
  • jquery live 会减慢网站速度吗?

    我有一个问题 我正在使用 jquery U I 选项卡 该选项卡通过 ajax 加载所有内容 现在 每次您单击选项卡时 我都会看到部分视图会加载到该选项卡中 现在 在这个部分视图中 它们是 javascript 文件 它们使用 jquery
  • 在 PHP 中打开命名管道时如何防止 fopen() 挂起

    我有一个命名管道文件 如下所示 prw r r 1 root root 0 Aug 11 17 01 tmp debug 当我在 PHP 中做这样的事情时 fp fopen tmp debug r 它挂起 即永远不会返回 有没有办法让这个调
  • 更改屏幕方向后 TextView 内容丢失

    观察 Android 模拟器中的应用程序行为 我发现更改屏幕方向 Ctrl F11 后 EditText 内容被保留 但 TextView 内容被重置为其初始值 并且不保留程序设置的最新信息 这是定义上的行为吗 我可以做什么来保留这些内容
  • jQuery 跨站点获取

    我觉得这很容易 但我错过了一些东西 使用 jQuery 我尝试获取远程页面 在不同的服务器上 捕获 HTML 内容 并将该内容注入到隐藏的 DIV 中 但是 使用 ajax 或 get 会导致 FireFox 中出现跨站点脚本错误 有什么建
  • 在 Rails 中,我应该如何为任务应用程序实现状态字段 - 整数还是枚举?

    对于 Rails 3 0 Todo 应用程序 我有一个带有Status场地 存储状态字段数据 字段类型 并仍然在视图 HTML 表 中显示人类可读版本的最佳方法是什么 状态可以是 0 正常1 活动2 已完成 现在我有这个 Rails 架构在
  • Swing 自定义 GUI 组件

    我需要创建一个与下图所示相同的自定义 GUI 组件 它上面有一些按钮和标签 我怎样才能像这样创建 您可以使用 JWindow 并使用 Image 作为背景图片 对于按钮 使用带有 ImageIcon 的 JButton
  • React-spring useTransition 在轮播样式组件上导致过渡期间重叠

    我正在尝试制作一个模态框 它将在轮播样式组件中显示几张幻灯片 并在幻灯片更改时制作一些简单的进入 退出动画 我正在使用useTransition 钩子 https react spring io hooks use transition来自
  • jqplot 改变鼠标悬停时图形的颜色

    jqPlot当鼠标悬停时更改填充的颜色 我想删除该效果 如何 以下是使用的选项 var options series neighborThreshold 1 shadowAngle 0 shadowOffset 2 5 shadowAlph
  • (折叠)工具栏标题在 Snackbar 出现后重置其位置

    我有一个布局CollapsingToolbarLayout and CoordinatorLayout作为根元素 每当一个Snackbar显示在activity the title of the toolbar将其位置重置为默认的扩展标题位
  • 期望:将生成命令的输出存储到变量中

    在我的 预期 脚本中 set REPOS path to repo set REV 73 set LOG spawn svnlook log r REV REPOS 这将在变量 LOG 中存储什么 16345 内存位置 它应该在变量 LOG
  • Socket.io 是否保证客户端按顺序接收广播事件?

    Socket IO 中是否有某种排序机制可以保证客户端按顺序接收事件 例如 如果服务器发出事件Evt1发送给客户端A 服务器广播Evt2致所有客户 因此客户端A收到Evt1 then Evt2并且只能按照这个顺序 我的猜测是否定的 如果是这
  • 如何加快 PostgreSQL 中的插入性能

    我正在测试 Postgres 插入性能 我有一个表 其中一列的数据类型为数字 上面也有一个索引 我使用以下查询填充了数据库 insert into aNumber id values 564 43536 34560 我使用上面的查询很快插入
  • UIWebView:为什么使用不存在的主机名时请求不会超时?

    我的情况是这样的 我有一个UIWebView它向用户提供主机名的 URL 发出 POST 请求 当主机名不存在时 我需要超时 以便我可以提醒用户他们应该检查他们的设置 怎么了 我提出这样的请求 NSString theURL NSStrin
  • Sublime 3 中的包控制不起作用?

    注意 我首先在论坛上搜索了 sublime 以便发布问题 因为我不确定这个问题是否适合这个特定的论坛 并想将其与其他帖子进行比较 如果它不应该在这里 请告诉我 我很乐意在此处关闭它并在任何其他 stackoverflow 论坛中打开它 谢谢
  • IIS 10.0 详细错误 - [httpDelete] [httpPut] 的 404.0

    我正在尝试在 ASP NET MVC 中创建一个 api 不幸的是 我有两个 HTTP 请求的问题 DELETE 和 PUT ActionName Index HttpGet public String Index return get A
  • 预接收挂钩被拒绝:提交消息中未发现 JIRA 问题?

    我已经提交并尝试将更改推送到存储库 但它给了我这个错误 remote refs heads feature OMT 1270 Missing French Translations cd54ab15bc8d5764ab12cf6fc202f
  • 如何从 Java 文本文件中读取逗号分隔值?

    我得到了这个文本文件 其中包含地图上不同点的纬度和经度值 如何将字符串拆分为纬度和经度 使用空格或制表符等其他分隔符执行此类操作的一般方法是什么 样本文件 28 515046280572285 77 38258838653564 28 51
  • 将不相关的集合映射到一个集合

    我有一个类 其中包含两个不同的不相关类型的集合 public class Entity ICollection
  • 在 Exchange Web 服务 (EWS) 中处理事件时识别项目类型

    我正在使用带有 EWS API 的流式通知 在事件处理程序中 我发现某个项目已被修改 但我尝试将修改后的项目绑定到电子邮件消息失败 错误信息具体是 服务 约会 返回的项目类型不兼容 与请求的项目类型 EmailMessage 似乎在尝试绑定