请求的资源不支持vb.net web api中的http方法'GET'

时间:2017-03-18 10:08:42

标签: vb.net asp.net-web-api asp.net-web-api-routing

我正在使用vb.net中的Web API 2,我遇到了GET方法的问题。 首先,我能够将HttpGetAcceptVerbs放在类或操作方法上

我没有Routeconfig因为我创建了Web API 2雇用模板项目。

这是我的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

但是当我运行网址时:http://localhost:43021/api/home/ConcatValues?param1=1&param2=2

我收到错误:

  

{“Message”:“请求的资源不支持http方法   'GET'。“}

1 个答案:

答案 0 :(得分:1)

<HttpGet()>属性添加到操作中,以便您配置的基于约定的路由知道将操作与GET请求相关联。通常,约定检查动作的名称,如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