首页 > 解决方案 > 为什么此命令在不包含数组时有时会引发数组边界异常

问题描述

我有一个循环遍历一个数组的过程,该数组是一个 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 命令,但在这三个命令中都没有引用数组。是否可能是服务器本身的内存错误?

标签: vb.netfile-copyingfilesystemobject

解决方案


推荐阅读