2017-03-18 2 views
1

vb.net에서 Web API 2를 사용하고 있는데 GET 메서드로 문제가 발생했습니다. 모든 우선 내가 웹 API이 고용 템플릿 프로젝트를 생성하기 때문에 내가 Routeconfig이없는 두 클래스 또는 조치 방법요청한 리소스가 vb.net 웹 API에서 'GET'메서드를 지원하지 않습니다.

HttpGet 또는 AcceptVerbs을 넣을 수있게되었습니다. 여기

WebApiConfig 파일

Public Module WebApiConfig 
    Public Sub Register(ByVal config As HttpConfiguration) 
     ' Web API configuration and services 

     ' Web API routes 
     config.MapHttpAttributeRoutes() 

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

     config.Formatters.JsonFormatter.SupportedMediaTypes.Add(New MediaTypeHeaderValue("text/html")) 
    End Sub 
End Module 

및 API 컨트롤러 클래스

Public Class HomeController 
    Inherits ApiController 

    ' GET api/values 
    'Public Function GetValues() As IEnumerable(Of String) 
    ' Return New String() { "value1", "value2" } 
    'End Function 


    ' GET api/values/5 

    Public Function ConcatValues(ByVal param1 As String,ByVal param2 As String) As String 
     Return "value" 
    End Function 

End Class 

하지만 URL을 실행하면 : http://localhost:43021/api/home/ConcatValues?param1=1&param2=2

을 나는 점점 오전 오류 :

{ " 메시지 ":"req uested 자원이 HTTP 메서드를 지원하지 않습니다 'GET'. "} 사용자가 구성한 규칙 기반 라우팅은 GET 요청과 작업을 연결할 알 수 있도록

답변

1

액션에 <HttpGet()> 속성을 추가합니다. 일반적으로 컨벤션은 규범에 따라 GetConcatValues과 같은 액션 이름을 검사하여 GET 요청임을 확인합니다. 예제 작업은 그 규칙을 사용하지 않기 때문에 다음 옵션은 <HttpGet()> 속성을 작업 정의에 첨부하는 것입니다.

' GET api/home/concatvalues?param1=1&param2=2 
<System.Web.Http.HttpGet()> 
Public Function ConcatValues(ByVal param1 As String,ByVal param2 As String) As String 
    Return "value" 
End Function