Vb.net 具有多个POST和单PUT方法的Web Api控制器

Vb.net 具有多个POST和单PUT方法的Web Api控制器,vb.net,asp.net-web-api,Vb.net,Asp.net Web Api,根据下面的代码,我可以调用/api/cards和/api/cards/list,但现在可以调用/api/cards/1234567890 WebApiConfig config.Routes.MapHttpRoute( _ name:="WithActionAndIdApi", _ routeTemplate:="api/{controller}/{action}/{id}", _ defaults:=New With {.id = RouteParam

根据下面的代码,我可以调用/api/cards和/api/cards/list,但现在可以调用/api/cards/1234567890

WebApiConfig

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

    config.Routes.MapHttpRoute( _
        name:="WithIdApi", _
        routeTemplate:="api/{controller}/{id}" _
    )

    config.Routes.MapHttpRoute( _
        name:="DefaultApi", _
        routeTemplate:="api/{controller}", _
        defaults:=New With {.action = "DefaultAction"} _
    )
卡片控制器

<HttpPost()>
<ActionName("DefaultAction")>
Public Function PostValue(<FromBody()> ByVal value As Card_POST.Card) As HttpResponseMessage

<HttpPost()>
<ActionName("list")>
Public Function PostValue(<FromBody()> ByVal value As Cards_POST.CardList) As HttpResponseMessage

<HttpPut()>
Public Function PutValue(ByVal Id As String, <FromBody()> ByVal value As Card_PUT) As HttpResponseMessage

公共函数PostValue(作为Card_POST.Card的ByVal值)作为HttpResponseMessage
公共函数PostValue(作为Cards的ByVal值_POST.CardList)作为HttpResponseMessage
公共函数PutValue(ByVal Id作为字符串,ByVal值作为Card_PUT)作为HttpResponseMessage

我已将配置路由更改为下面的代码,它能够支持上面的情况

config.Routes.MapHttpRoute( _
       name:="DefaultApiWithId", _
       routeTemplate:="api/{controller}/{id}", _
       defaults:=New With {.id = RouteParameter.Optional}, _
       constraints:=New With {.id = "^\d+$"} _
    )

    config.Routes.MapHttpRoute( _
       name:="DefaultApiWithAction", _
       routeTemplate:="api/{controller}/{action}" _
   )

    config.Routes.MapHttpRoute( _
       name:="DefaultApiGet", _
       routeTemplate:="api/{controller}/{id}", _
       defaults:=New With {.id = RouteParameter.Optional}, _
       constraints:=New With {.httpMethod = New HttpMethodConstraint({"GET"})} _
   )

    config.Routes.MapHttpRoute( _
       name:="DefaultApiPost", _
       routeTemplate:="api/{controller}", _
       defaults:=New With {.action = "DefaultPostAction"}, _
       constraints:=New With {.httpMethod = New HttpMethodConstraint({"POST"})} _
   )

    config.Routes.MapHttpRoute( _
       name:="DefaultApiPut", _
       routeTemplate:="api/{controller}/{id}", _
       defaults:=Nothing, _
       constraints:=New With {.httpMethod = New HttpMethodConstraint({"PUT"})} _
   )

请确保你在问一个问题。不清楚您遇到了什么问题,或者您试图解决什么问题。您是如何执行PUT请求的?@Mate,我已通过更改配置解决了问题。太棒了!祝贺 你!把自己的答案标记为正确