避免 Exchange 的不受支持的集成方法

原始 KB 编号: 3086992

简介

本文介绍 Microsoft 客户服务和支持部门如何帮助开发人员生成使用各种开放标准的自定义解决方案,并且这些解决方案还与Microsoft Exchange Server集成。

更多信息

为Exchange Server编写代码时,请务必使用支持的 API 和方法。 有时,开发人员会尝试增强 Exchange 的行为,或者通过使用一些不支持的方法将应用程序与Exchange Server集成。 这可能会导致 Exchange 变得不稳定,并以意外的方式运行。

Microsoft 不支持以下做法:

  • 使用不专门支持线程模拟的 API 对 Exchange 使用线程模拟。
  • 更改客户端访问服务器上的 Outlook Web App (OWA) 、Exchange Web Services (EWS) 、Exchange ActiveSync (EAS) 或类似流 (CAS) 。
  • 在 Exchange 应用程序池中运行 ISAPI 扩展或模块。
  • 更改运行 Exchange 应用程序池的帐户。
  • 以不受支持的方式将 DLL 注入 Exchange 进程Exchange Server 将使用为其设计和测试的特定接口和做法。 由于这些特定做法通过使用不受支持的方法引入了功能,因此 Microsoft 认为此类开发不受支持。

当Microsoft 支持部门代理发现似乎使用所列方法之一的第三方应用程序时,他们很可能要求你删除应用程序,以检查问题是否重现。 如果在删除第三方应用程序后问题未重现,则必须联系该产品的支持工程师来解决问题。

Exchange 具有防止代码执行线程模拟的检查。 例如,Exchange 可以突然关闭其进程 (FastFail) 。 在这种情况下,Exchange 事件日志中记录了事件 4999。 它包含以下文本:

M.E.D.D.ConnectionPoolManager.BlockImpersonatedCallers

允许其他应用程序模拟的 EWS 等 API 具有模拟帐户本身的机制。 安全软件和单一登录软件是应用程序在发送到 Exchange 的调用时使用线程模拟更改凭据的常见示例。

在另一个应用程序的工作池进程下,在一个应用程序中运行的第三方代码可能会导致问题,除非应用程序与其他应用程序协同工作。 Exchange 不允许其他应用程序在其工作进程下运行。 Exchange 应用程序池进程仅属于 Exchange,不应在它们下运行第三方代码。 这样做可能会导致与 Exchange 冲突,并可能导致进程失败。

一些开发人员更改 Exchange 部分工作所依据的帐户,以获得一些他们本来不会拥有的功能。 这可能会导致服务器崩溃、数据损坏和其他意外问题。 这些问题可能会在过程中的任何时间点发生。

有一些受支持的方法可将自定义 DLL 与 Exchange 集成,例如自定义传输代理。 不建议使用 Exchange 开发不支持的方法。 例如,强制注入 DLL 是一种不支持将自定义 DLL 加载到 Exchange 的方法。

在考虑将第三方应用程序与 Exchange 集成的选项时,请务必避免使用不支持的方法。 这种做法以后可能会产生严重后果,例如功能丢失或需要重写应用程序。 最后,你可能会遇到一个路障,没有前进的道路。