【问题标题】:The requested resource does not support http method 'GET' in vb.net web api请求的资源不支持 vb.net web api 中的 http 方法“GET”
【发布时间】:2017-03-18 10:08:42
【问题描述】:

我正在使用 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

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

我收到错误:

{"Message":"请求的资源不支持http方式 '得到'。"}

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2013-03-05
      • 2020-09-19
      • 2012-06-15
      • 2016-11-26
      • 2012-09-27
      • 2014-01-28
      • 2015-10-08
      • 2017-07-03
      • 2014-06-23
      相关资源
      最近更新 更多