Exchange Web 服务附件加载缓慢

2024-04-02

我正在编写一些代码来下载和处理电子邮件的附件,然后处理它们。该代码在某些情况下可以按要求工作,但仍然存在一些重大问题。

每当代码将附件加载到本地磁盘上的文件中时,都会花费很长的时间,并且经常会由于下载缓慢而超时,并出现以下异常:

A first chance exception of type 'Microsoft.Exchange.WebServices.Data.ServiceRequestException' occurred in Microsoft.Exchange.WebServices.dll

我可能是错的,但如果有问题的交换服务器与运行代码的服务器位于同一千兆位网络上,并且 Outlook 可以快速访问电子邮件、附件等,那么附件的下载速度应该比它们快得多,而且更加一致。以下是下载/加载时间的一些示例:

  • 800KB 拉链 - 1m 4s
  • 840KB 拉链 - 6m 18s
  • 1.33MB 拉链 - 11m 23s
  • 2.78MB 拉链 - 17m 3s

我尝试将 EWS 连接超时设置设置为 300000 毫秒,而不是默认的 100000 毫秒,以便为附件提供更多时间下载,并且异常数量略有减少,但等待时间现在太长了。

该代码确实在线程中运行,一次不超过 8 个(我相信 10 个是 EWS 的限制),但我无法想象这会产生很大的差异。 (当我一次测试单个电子邮件时,它还没有完成)。

以下是下载附件的线程代码(为简单起见,删除了一些不相关的位):

        Dim strMessageFolder As String

        ' Prepare the directory where this emails attachments will be stored
        strMessageFolder = g_strFolder_Temp & strMessageID & "\"

        ' Create a folder to store the attachments for this email
        Call FileSystem_CreateFolder(strMessageFolder, True)

        ' Process the emails attachments
        For Each emailAttachment In emailMessage.Attachments
            Dim fileattach As FileAttachment
            'Dim fileattachStream As FileStream
            Dim strAttachmentFile As String

            ' Prepare for the downloading of the attachment
            fileattach = emailAttachment
            blnTryFailed = False
            intAttempts = 0
            strAttachmentFile = strMessageFolder & fileattach.Name

            ' Handle up to 3 download attempts
            Do
                Try
                    ' Try to download the attachment - Method 1
                    fileattach.Load(strAttachmentFile)

                    ' Try to download the attachment - Method 2
                    'fileattachStream = New FileStream(strAttachmentFile, FileMode.OpenOrCreate, FileAccess.ReadWrite)
                    'fileattach.Load(fileattachStream)
                    'fileattachStream.Close()
                    'fileattachStream.Dispose()

                    blnTryFailed = False

                Catch ex As Exception
                    blnTryFailed = True

                    ' Ensure the failed download is deleted
                    Call FileSystem_DeleteFile(strAttachmentFile)

                    intAttempts += 1

                End Try

            Loop While blnTryFailed And intAttempts < 3

            ' If the attachment download was unsuccessful then we cannot process the current email
            If blnTryFailed = True Then
                emailMessage.IsRead = False
                'message.Subject = message.Subject & " - Attachment download failed, skipped"
                Try
                    emailMessage.Update(ConflictResolutionMode.AutoResolve)
                Catch ex As Exception
                    Call Logging_Add("Unable to mark email as skipped", strMessageID, "Debug")
                End Try
                Exit Sub
            End If

如前所述,我知道 Exchange 限制,但找不到与附件下载速度相关的任何信息。 所以我的问题是,什么可能导致下载速度如此缓慢?


我的应用程序也有同样的问题。该问题是由默认 EWS 设置引起的,该设置将 EWS 和应用程序之间的所有 HttpRequest 和 HttpResponse 消息写入控制台。关闭 TraceFlags 是一件幸事。 我的 C# 代码:

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

Exchange Web 服务附件加载缓慢 的相关文章

随机推荐

  • OpenLayers 标记图标问题

    我正在我的网站中创建 OSM 地图 并使用 openlayer 添加一些标记 我的问题是我总是得到相同的标记图标
  • 有没有办法重置 Julia 中的当前工作目录?

    假设当前工作目录是C 保存 jl文件的目录 然后我将cwd切换到一些子文件夹来执行一些任务 有没有办法直接将cwd重置回C 之后 即最初的cwd 或者 是否可以独立于当前工作目录来定位正在运行的 jl 文件所在的目录 无需事先将 cwd 保
  • 如何在页面中自动刷新Cognito Token

    我使用 AWS Cognito 服务进行身份验证 在我的 Angular 7 应用程序中 我使用 Amplify Auth 来保护我的页面 如果用户在不同页面之间导航 Amplify 将自动处理令牌刷新 并且他们不会看到令牌过期 如果用户长
  • Pydev 显示未解决的导入,但脚本运行?

    我正在使用 PyDev 我正在尝试将我的项目类组织到包中 例如在一个文件夹中 我有一个模块 libraries fund price library py 在我的项目的另一个文件中 我尝试使用以下方式导入 from libraries fu
  • 如何提取文本中使用的关键字? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • 使用 glFrustum 进行离轴投影

    我正在尝试使用 OpenGL 对场景进行离轴投影 并且我阅读了该文档罗伯特 库伊马的离轴投影 http csc lsu edu kooima pdfs gen perspective pdf现在对实际需要做什么有了更好的了解 但仍然有一些部
  • Java PaintComponent 告诉是否再次调用

    谷歌搜索了几天 我不知道如何判断在处理paintComponent时是否调用了paintComponent 这个过程漫长而复杂 如果我有第二个 或第三个 绘制请求 我想中止当前的绘制过程并重新开始最近的请求 你不能 打电话给paintCom
  • TensorFlow 2.0 中不再提供投影变换,我该怎么办?

    我的团队正在切换到 TensorFlow 2 0 我正在研究数据增强管道 TensorFlow 1 X 有tf contrib image transform允许投影变换 TensorFlow 中没有变换函数tf image它肯定没有tf
  • AzureDev Ops CI 构建未更新版本 (VersionPrefix)

    我有一个 Azure DevOps 管道 其中包含本地 nuget 包到本地工件存储库 然后推送到 nuget org 但是它不会更新版本并保持在1 0 0 build ver 在本地 azure DevOps 项目工件中 同时版本卡在包的
  • 如何根据控件的属性(Top/Tabstop)设置WPF动画BeginTime

    我有一个 WPF 应用程序 它在垂直堆栈面板中具有一系列按钮 类似于 DVR 菜单的外观 我想出了如何制作一个动画 当每个新的菜单页面加载时 按钮 控件全部 unfade fall deblur 无论什么 都存在 这很好 但有点太统一了 我
  • 使用非常量表达式作为模板参数

    这是后续如何获取可变参数模板类中函数指针的参数类型 https stackoverflow com questions 9065081 how do i get the argument types of a function pointe
  • 生成器完成后调用自耕农生成器

    我希望在第一个生成器完成安装后调用另一个 yeoman 生成器 这将基于我对其中一个提示给出的答案 我尝试在最后调用它 end function this installDependencies callback function if t
  • JAXB - 将 SOAP 映射到 Java 类

    我需要帮助将我的 Soap Envelope 映射到 java 类 我的目的是将结果操纵到数据库 我在获取 SOAP 信封或使用 DB 方面没有任何问题 我的问题完全在于 JABX 以及根据我的 SOAP 信封映射我的类 这是我的肥皂
  • 登录时传递cookie

    我想集成 python Selenium 和 Requests 模块以在网站上进行身份验证 我正在使用以下代码 import requests from selenium import webdriver driver webdriver
  • 如何在 SQLite 查询中使用正则表达式?

    我想在 sqlite 中使用正则表达式 但我不知道如何 我的表有一列包含如下字符串 3 12 13 14 19 28 32 现在 如果我输入 where x LIKE 3 我还会得到包含 13 或 32 等值的行 但我只想获取该字符串中恰好
  • 以编程方式在 UITableViewCell 中呈现带有按钮的视图控制器 (Swift)

    I am trying to make it where when a user clicks on a table view cell in my table view it takes them to a new view contro
  • Outlook 插件 - 获取当前选定的日历日期

    当右键单击日历并运行功能区操作时 是否可以像获取当前邮件项或约会项一样获取选定的日历日期 功能区 XML
  • 是否可以将组件作为 props 传递并在 Vue 的子组件中使用它?

    在 Vue 2 0 应用程序中 假设我们有组件 A B 和 C A声明 注册并使用B 是否可以将C从A传递到B 像这样的事情
  • 如何取消numpy seed()的效果?

    我想在程序的第一部分使用 np random seed 并在第二部分取消它 再次 在我的 python 文件的第一部分中 我希望在每次执行时生成相同的随机数 在第二部分中 我希望在每次执行时生成不同的随机数 在第一部分中 使用常量初始化种子
  • Exchange Web 服务附件加载缓慢

    我正在编写一些代码来下载和处理电子邮件的附件 然后处理它们 该代码在某些情况下可以按要求工作 但仍然存在一些重大问题 每当代码将附件加载到本地磁盘上的文件中时 都会花费很长的时间 并且经常会由于下载缓慢而超时 并出现以下异常 A first