vb.net - 为什么此命令在不包含数组时有时会引发数组边界异常
问题描述
我有一个循环遍历一个数组的过程,该数组是一个 PDF 文件名列表,对于每个文件,它必须编写一个模板 PDF,该模板存储在与 exe 相同的文件夹中,并将其复制到网络共享为“pdffilename”~001。 pdf,然后将数据文件从 S3 存储桶复制到网络共享为“pdffilename”~002.pdf。在某些情况下,该文件将不存在,但我们仍然需要分隔符,有时代码只会编写多个分隔符(~001)并且没有数据文件,但是当这种情况发生时,我在编写分隔符 pdf 时随机遇到失败。
当通过 VS 在我的笔记本电脑上运行时,这工作正常,但是当我将应用程序部署到我们的应用程序服务器时,当有很多丢失的文件时它会失败。
If sFile(0) <> "999-Envelopes" Then
Try
boxTriggerReqd = True
My.Computer.FileSystem.CopyFile("doc_sep.pdf", OutputFolder & "\" & Replace(oFileName, "~002.pdf", "~001.pdf"), True)
Log.writeline("Document Separator written:" & vbTab & OutputFolder & "\" & Replace(oFileName, "~002.pdf", "~001.pdf"))
Catch ex As Exception
Call EndTask(ex.Message, "Unable to transfer Document separator", 11)
End Try
Else
envTriggerReqd = True
End If
Try
dlResponse = s3client.GetObject(GetFile)
With dlResponse
.WriteResponseStreamToFile(OutputFolder & "\" & oFileName)
.Dispose()
End With
Log.WriteLine("Data file written:" & vbTab & vbTab & OutputFolder & "\" & oFileName)
Catch ex As Exception
results.WriteLine(sFile(1))
Call EndTask(ex.Message, targetFile, 12)
results.Flush()
End Try
错误日志显示
****** S3 PULL ******
Index was outside the bounds of the array.
Unable to transfer Document separator
****** S3 PULL ******
它调用 EndTask 的地方包含“无法传输文档分隔符”,因此它发生在三个命令之一中
我假设它是 CopyFile 命令,但在这三个命令中都没有引用数组。是否可能是服务器本身的内存错误?
解决方案
推荐阅读
- django - Django + S3 签名过期
- cordova - 我的 ionic 应用程序在 iOS 13 上的 cordova j3k0 / cordova-plugin-purchase 失败
- android - 签名后不上传到 Playstore 的测试版本构建
- c++ - 为什么要在重载函数中使用 const_cast?
- firebase - 使用 Firebase Cloud Functions 和 Stripe 在 Flutter 中处理付款的正确/安全方法是什么?
- javascript - 如何使用 Javascript 和 Nodejs 将图像(在 Web 应用程序中使用网络摄像头拍摄)上传到 SQLite 数据库?
- php - CURL FTP 连接仅在主机上被拒绝
- c# - 无法释放 WPF 图像内存
- c# - 您如何以统一的帧速率移动?
- c# - EntityFrameworkCore.SqlServer:无法使用自定义模型类映射数据库表