電子メールメッセージの添付ファイルをダウンロードして処理してから処理するコードを記述しています。このコードは、必要に応じて機能していますが、依然として大きな問題を抱えています。Exchange Webサービス添付ファイルの読み込み速度が遅い
コードは、ローカルディスク上のファイルに添付ファイルをロードするたびに、それが遅いのダウンロードの結果として、以下の例外を除いてそれほど多くの場合、タイムアウトに行うには非常に長い時間がかかる:
A first chance exception of type 'Microsoft.Exchange.WebServices.Data.ServiceRequestException' occurred in Microsoft.Exchange.WebServices.dll
私は間違っているかもしれませんが、問題の交換サーバーがコードを実行しているサーバーと同じギガビットネットワーク上にある場合、Outlookは電子メール、添付ファイルなどへの高速アクセスがあります。添付ファイルは、はるかに高速にダウンロードする必要があります。 1メートル4S
- 800キロバイト郵便番号:ここでは、ダウンロード/ロード時間のいくつかの例であり、
添付ファイルをダウンロードする時間が長くなるため、EWS接続のタイムアウト設定をデフォルトの100000msではなく300000msに設定してみましたが、例外の数はわずかに減少しましたが、待ち時間が長くなりすぎました。
コードはスレッド単位で実行されますが、一度に8つ以上(EWSのスロットリング制限は10であると考えています)ですが、違いが大きいと想像できません。 (私が一度に1つの電子メールをテストしていたときは、これは完了していません)。前述したように絞る取引所の意識をイム、
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
が、速度に関連する何かを見つけることができません。ここで
は、添付ファイル(単純化のために削除いくつかの非関連ビット)をダウンロードスレッドコードであります添付ファイルがダウンロードされます。 私の質問は、このような遅いダウンロード速度の原因となる可能性がありますか?