Vb.net 如何将多个属性传递给WebApi?

Vb.net 如何将多个属性传递给WebApi?,vb.net,api,asp.net-web-api,Vb.net,Api,Asp.net Web Api,我有一个用VB.NET制作的webapi,在那里我可以获得所有数据,按月数据和按年数据。现在,我尝试添加按数据范围获取数据的功能,在构造函数中,方法如下所示: Public Function TotaliDataData(ByVal inizio As String, ByVal fine As String) As IEnumerable(Of Totali) Dim SQLConnect As String = "Server=127.0.0.1;Port=3306;Database

我有一个用VB.NET制作的webapi,在那里我可以获得所有数据,按月数据和按年数据。现在,我尝试添加按数据范围获取数据的功能,在构造函数中,方法如下所示:

Public Function TotaliDataData(ByVal inizio As String, ByVal fine As String) As IEnumerable(Of Totali)
    Dim SQLConnect As String = "Server=127.0.0.1;Port=3306;Database=00168780351;Uid=root;Pwd=block;"
    Dim cn As New MySqlConnection(SQLConnect)
    Dim cmd As New MySqlCommand("SELECT NPV_TT, NCASSA_TT, DATA_TT, AZZ_TT, SUM(NSC_TT) AS NSC_TT, SUM(VENDITE_TT) AS VENDITE_TT, RESI_TT, ANNULLI_TT, SCONTI_TT, FATTURE_TT, NC_TT FROM totali WHERE DATA_TT BETWEEN '" & inizio & "' AND  '" & fine & "' GROUP BY MONTH(DATA_TT);", cn)
    cn.Open()
    Dim reader As MySqlDataReader = cmd.ExecuteReader()
    Dim totali As List(Of Totali) = ConvertReader(reader)
    cn.Dispose()
    Return totali
End Function
这是我的TotaliController.VB:

Public Class TotaliController
    Inherits ApiController

    Public Function GetTotali() As IEnumerable(Of Totali)
        Dim Totali As Totali = New Totali
        Return Totali.GetTotali()
    End Function

    Public Function GetTotaliByYear(ByVal anno As String) As IEnumerable(Of Totali)
        Dim Totali As Totali = New Totali
        Return Totali.TotaliAnno(anno)
    End Function

    Public Function GetTotaliByMonth(ByVal mese As String) As IEnumerable(Of Totali)
        Dim Totali As Totali = New Totali
        Return Totali.TotaliMese(mese)
    End Function

    Public Function TotaliDataData(ByVal inizio As String, ByVal fine As String) As IEnumerable(Of Totali)
        Dim Totali As Totali = New Totali
        Return Totali.TotaliDataData(inizio, fine)
    End Function

    Public Function GetDetails(ByVal annod As String) As IEnumerable(Of Totali)
        Dim Totali As Totali = New Totali
        Return Totali.GetDetails(annod)
    End Function

End Class
然后我尝试调用
localhost:port/api/totali/?inizio=2019-11-10&fine=2019-12-20
,但它甚至没有进入控制器的调试,而如果我尝试使用单个参数按月或按年获取数据,它工作正常

那么如何将多个参数传递给WebApi呢

更新:

当我尝试运行
localhost:port/api/totali/?inizio=2019-11-10&fine=2019-12-20
时,它从控制器调用默认的GetTotali()方法,从数据库返回所有数据

全球:

Public Class WebApiApplication
    Inherits System.Web.HttpApplication

    Protected Sub Application_Start()
        GlobalConfiguration.Configure(AddressOf WebApiConfig.Register)
        GlobalConfiguration.Configuration.Formatters.
            JsonFormatter.MediaTypeMappings.Add(New RequestHeaderMapping("Accept", "text/html", StringComparison.InvariantCultureIgnoreCase, True, "application/json"))
    End Sub

End Class
WebApiConfig

Public Module WebApiConfig
    Public Sub Register(ByVal config As HttpConfiguration)
        ' Servizi e configurazione dell'API Web

        ' Route dell'API Web
        config.MapHttpAttributeRoutes()

        config.Routes.MapHttpRoute(
            name:="DefaultApi",
            routeTemplate:="api/{controller}/{id}",
            defaults:=New With {.id = RouteParameter.Optional}
        )
    End Sub
End Module

显然,WebApi控制器中的方法名称必须以REST前缀开头,因此通过将方法
TotaliDataData
的名称更改为
GetTotaliDataData
解决了这个问题。

调用该URL时会发生什么?它是否调用控制器中的另一个方法?Return 404?@theduck更新了这个问题,它调用了默认的GetTotali(),你的例子对我来说没问题。您是否有任何路由可能会影响此控制器中的路由?(例如在Global.asax.vb中)@IgorMytyuk好吧,那么,我想你也不希望随之而来的性能改进。此外,您还需要使用
cn.Dispose()
,或者您可以使用来为您处理非托管资源。@igormytuk虽然日期确实需要序列化为查询字符串中的字符串,但我希望在代码中的任何其他地方使用之前,这些日期都经过验证并解析为日期时间。