繁体   English   中英

Web API定义到控制器asp.net的路由

[英]Web API Defining routes to controllers asp.net

我是堆栈溢出和ASP.NET方面的新手,但在这里我将尽力阐明我的观点。

我正在VB.NET中开发Web API,但是在尝试定义路由时遇到了麻烦。

我有例如这些功能:

Public Function GetAllInformations() As IEnumerable(Of cl_information)

    'return all informations

End Function

Public Function GetInformations(p_id As Int16) As IHttpActionResult

    'return a specific informations

End Function

Public Function PutInformation(p_information As cl_information) As IHttpActionResult

    'return the http statuscode depending on the update of the information

End Function

Public Function PostInformation(p_information As cl_information) As IHttpActionResult

    'return the http statuscode depending on the post of the information

End Function

当我尝试使用邮递员使用此控制器时,首先检查URI的GET方法:/ api / informations。 GetAllInformations()方法已正确触发。 但是,当我尝试对特定信息项使用GET方法时,在这种URI上:/ api / informations / i,也会触发GetAllInformations()。

我从Visual Studio的活动日志中获得了这些信息:

"data": {
"baseType": "RequestData",
"baseData": {
  "ver": 2,
  "id": "12785441767974844366",
  "name": "GET informations [id]",
  "startTime": "2016-05-12T08:56:49.4044704+02:00",
  "duration": "00:00:04.1740006",
  "success": true,
  "responseCode": "200",
  "url": "http://localhost:51651/api/informations/i",
  "httpMethod": "GET",
  "properties": {
    "DeveloperMode": "true"
  }
}

我不知道为什么请求未正确路由到我的GetInformations(p_id As Int16)函数。 你能帮我吗?

仅供参考:我有以下基本路线配置:

Public Module WebApiConfig
Public Sub Register(ByVal config As HttpConfiguration)
    ' Configuration et services API Web

    ' Itinéraires de l'API Web
    config.MapHttpAttributeRoutes()

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


End Module

编辑:

我尝试使用可选参数来实现一种处理两种情况的方法,但是如果我测试URI,则不会检测到该参数:/ api / informations / i

        Public Function GetInformations(Optional p_id As Int16 = 0) As IHttpActionResult

        If p_id = 0 Then

            'return all informations

        End If

            'return a specific information

    End Function

经过一天半的时间,我的脑袋开始跳动,但我终于找到了问题所在。

我使用了错误的参数名称:

Public Function GetInformations(p_id As Int16) As IHttpActionResult

所以我通过以下方式更改了它:

Public Function GetInformations(id As Int16) As IHttpActionResult

它正在工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM