我在VB中創建api conroller類。我有一個很簡單的功能在裏面:測試API帖子通過<Frombody()>類 - 總是NULL
Public Function Post(<FromBody()> ByVal value As String) As String
Return value
End Function
當我從發送HTTP 工具(Firefox擴展)POST請求,我可以看到它在功能上走,但value
總是空空的。
我有這個在我的WebApiConfig.vb
:
config.Routes.MapHttpRoute(
name:="Names",
routeTemplate:="{controller}/{id}",
defaults:=New With {.id = RouteParameter.Optional}
而這Global.ASAX.vb
Application-Start()
下:
RouteTable.Routes.MapHttpRoute(name:="Post", routeTemplate:="post", defaults:=New With {.symbol = RouteParameter.Optional, .controller = "Names"})
我提琴手4嘗試過這種從爲好,但我得到:
{「Message」:「該請求包含一個實體b ody但沒有內容類型 標題。 「」ExceptionMessage「:」No MediaTypeFormatter可用於從媒體類型爲 的應用程序讀取類型爲'String'的對象 '應用程序/八位字節流'不支持此資源 ' octet-stream'。「,」ExceptionType「:」System.Net.Http.UnsupportedMediaTypeException「,」StackTrace「:」 at System.Net.Http.HttpContentExtensions.ReadAsAsync [T](HttpContent content,Type type,IEnumerable' 1格式化器,IFormatterLogger formatterLogger,的CancellationToken的CancellationToken個)\ r \ n在 System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage 請求,類型類型,IEnumerable的「1格式化器,IFormatterLogger formatterLogger,的CancellationToken的CancellationToken)「}
或當我嘗試設置內容類型的頭,我得到:
沒有MediaTypeFormatter可從與閱讀內容類型 的‘字符串’對象媒體類型...
其中< ...>是我設置的任何媒體類型。
如何使這個簡單的POST工作?
這可能是一個相當體面的問題的答案。但是,我走了一條不同的路線,並且無法真正證明重新測試所提供的答案的時間。希望別人認爲這很有用。 – Jeroen