2016-05-12 2 views
0

Я начинаю с переполнения стека и в ASP.NET в целом, но я попытаюсь сделать здесь свою точку зрения.Web API Определение маршрутов для контроллеров asp.net

Я разрабатываю веб-API в VB.NET, но я застреваю, когда пытаюсь определить маршруты.

У меня есть, например, такие функции:

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 

Когда я пытаюсь этот контроллер, с помощью почтальона, я firsty проверить метод GET для URI:/API/информацию. Метод GetAllInformations() корректно запускается. Но когда я пытаюсь использовать метод GET для определенного информационного элемента, в этом виде URI:/api/informations/i также запускается GetAllInformations().

Я получил эту информацию из журнала событий в визуальной студии:

"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 Как Int16) функция. Не могли бы вы мне помочь?

FYI: У меня есть эта базовая конфигурация маршрутов:

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/информация/я

 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 

ответ

0

после полутора дней на это, мой ум дует, но я, наконец, нашел проблему.

я использовал неправильное имя параметра:

Public Function GetInformations(p_id As Int16) As IHttpActionResult 

Так я изменил его:

Public Function GetInformations(id As Int16) As IHttpActionResult 

, и это работает.

+0

Да, это все. отметьте свое сообщение как ответ –

+0

Вы также можете изменить маршрут, чтобы быть/{p_id} вместо {id}. – Spivonious

Смежные вопросы