我正在使用vb.net中的Web API 2,我遇到了GET方法的问题。
首先,我能够将HttpGet
或AcceptVerbs
放在类或操作方法上
我没有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¶m2=2
我收到错误:
{“Message”:“请求的资源不支持http方法 'GET'。“}
答案 0 :(得分:1)
将<HttpGet()>
属性添加到操作中,以便您配置的基于约定的路由知道将操作与GET
请求相关联。通常,约定检查动作的名称,如GetConcatValues
,以便按惯例确定它是GET
请求。由于示例操作未采用该约定,因此下一个选项是将<HttpGet()>
属性附加到操作定义。
' GET api/home/concatvalues?param1=1¶m2=2
<System.Web.Http.HttpGet()>
Public Function ConcatValues(ByVal param1 As String,ByVal param2 As String) As String
Return "value"
End Function