Как автоматически изменить размер образа диска для гостей Linux?

В качестве своего рода позднего ответа:

У меня возникла проблема с SSRS ReportService2005.asmx при загрузке отчета.

    Public Shared Sub CreateReport(ByVal strFileNameAndPath As String, ByVal strReportName As String, ByVal strReportingPath As String, Optional ByVal bOverwrite As Boolean = True)
        Dim rs As SSRS_2005_Administration_WithFOA = New SSRS_2005_Administration_WithFOA
        rs.Credentials = ReportingServiceInterface.GetMyCredentials(strCredentialsURL)
        rs.Timeout = ReportingServiceInterface.iTimeout
        rs.Url = ReportingServiceInterface.strReportingServiceURL
        rs.UnsafeAuthenticatedConnectionSharing = True

        Dim btBuffer As Byte() = Nothing

        Dim rsWarnings As Warning() = Nothing
        Try
            Dim fstrStream As System.IO.FileStream = System.IO.File.OpenRead(strFileNameAndPath)
            btBuffer = New Byte(fstrStream.Length - 1) {}
            fstrStream.Read(btBuffer, 0, CInt(fstrStream.Length))
            fstrStream.Close()
        Catch ex As System.IO.IOException
            Throw New Exception(ex.Message)
        End Try

        Try
            rsWarnings = rs.CreateReport(strReportName, strReportingPath, bOverwrite, btBuffer, Nothing)

            If Not (rsWarnings Is Nothing) Then
                Dim warning As Warning
                For Each warning In rsWarnings
                    Log(warning.Message)
                Next warning
            Else
                Log("Report: {0} created successfully with no warnings", strReportName)
            End If

        Catch ex As System.Web.Services.Protocols.SoapException
            Log(ex.Detail.InnerXml.ToString())
        Catch ex As Exception
            Log("Error at creating report. Invalid server name/timeout?" + vbCrLf + vbCrLf + "Error Description: " + vbCrLf + ex.Message)
            Console.ReadKey()
            System.Environment.Exit(1)
        End Try
    End Sub ' End Function CreateThisReport

Проблема возникает, когда вы выделяете байтовый массив, который по крайней мере на 1 байт больше, чем файл RDL (XML).

В частности, я использовал конвертер C # в vb.net, который преобразовал

  btBuffer = new byte[fstrStream.Length];

в

  btBuffer = New Byte(fstrStream.Length) {}

Но поскольку в C # число обозначает количество элементов в массиве, а в VB.NET это число обозначает UPPER BOUND массива, у меня был избыточный байт, вызывающий эту ошибку.

Таким образом, решение проблемы просто:

  btBuffer = New Byte(fstrStream.Length - 1) {}
14
задан Community 13 April 2017 в 12:22
поделиться