Конструктор не найден в веб-сервисе (asmx) - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть функция в веб-приложении vb. net, которым я пользуюсь уже 8 или 9 лет без проблем. Я хочу добавить эту функцию в веб-сервис, который будет возвращать объект, созданный в функции, но из веб-сервиса с именем DataInterface я получаю ошибку Constructor on type 'DataInterface.Release' not found.. Упомянутый здесь Release является отчетом Active Reports v11. Класс определен в веб-сервисе, и я могу вручную создать его с кодом Dim rpt2 as Release, и он работает просто отлично, но по какой-то причине System.Type.GetType("Release", True, True) вызывает ошибку Constructor on type 'DataInterface.Release' not found. Это код функции:

Public Function CompilePacket(ByVal MyConnection As OracleConnection, ByVal MyDataSet As DataSet, ByVal pLeague As String) As Object
    Dim packet As DataSet = GetPacket(MyConnection)
    Dim MyDataRow As DataRow
    Dim MyDataRow2 As DataRow
    Dim MyDataSetClone As New DataSet
    Dim DataTableCopy As DataTable = MyDataSet.Tables(0).Copy
    Dim rpt As New AdditionalReport
    Dim rpt2 As Object
    Dim typename As String = ""
    Try
        For Each MyDataRow2 In MyDataSet.Tables(0).Rows
            MyDataSetClone = MyDataSet.Clone
            MyDataSetClone.Tables(0).ImportRow(MyDataRow2)
            MyDataSetClone.Tables(0).TableName = "Data"
            For Each MyDataRow In packet.Tables(0).Rows
                rpt2 = New AdditionalReport
                typename = "DataInterface." & MyDataRow("ObjectName") & ", DataInterface"
                Dim type__1 As Type = System.Type.GetType(typename, True, True)
                DirectCast(rpt2.Sections(0).Controls(0), GrapeCity.ActiveReports.SectionReportModel.SubReport).Report = Activator.CreateInstance(type__1)
                rpt2.Sections(0).Controls(0).report.datasource = MyDataSetClone.Tables(0)
                rpt2.run()
                rpt.Document.Pages.AddRange(rpt2.Document.pages)
            Next
        Next
    Catch ex As Exception
        LogError("Error occured in CompilePacket function with report name: " & typename & " The error is: " & ex.Message)
    End Try
    Return rpt
End Function

Если мне нужно, я могу просто создавать отчеты отдельно и запускать их, проверяя известное имя в операторе If. Но это ограничило бы гибкость, которой я наслаждаюсь при создании этих отчетов, и я бы предпочел этого не делать. Если кто-то может объяснить и помочь решить проблему, я был бы признателен, если нет, то создание «вручную» - это мое единственное решение. Спасибо.

* Обновление *

Я даже не могу создать отчеты вручную, когда я пытаюсь использовать new Release(), я получаю Object reference not set to an instance of an object. Разочарование.

...