[英]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.