私はVBでapi conrollerクラスを作成しています。Testing API投稿を渡す<Frombody()>クラス - 常にNULL
Public Function Post(<FromBody()> ByVal value As String) As String
Return value
End Function
私はHTTPツール(Firefoxの拡張機能)からのPOSTリクエストを送信し、私はそれが機能して行く見ることができますが、value
は常に空です:私はそれに非常に単純な機能を持っています。
私はWebApiConfig.vb
でこれを持っている:
Application-Start()
下
Global.ASAX.vb
で
config.Routes.MapHttpRoute(
name:="Names",
routeTemplate:="{controller}/{id}",
defaults:=New With {.id = RouteParameter.Optional}
そして、この:
RouteTable.Routes.MapHttpRoute(name:="Post", routeTemplate:="post", defaults:=New With {.symbol = RouteParameter.Optional, .controller = "Names"})
私もフィドラー4からこれを試してみましたが、私は得る:
{"メッセージ": "リクエストにエンティティbが含まれていますコンテンツタイプの ヘッダーはありません。 "、" ExceptionMessage ":" No MediaTypeFormatterは、タイプ 'String'のオブジェクトを読み取るために利用可能です メディアタイプ のコンテンツからアプリケーション/ "、" System.Net.Http.UnsupportedMediaTypeException "、" StackTrace ":"at System.Net.Http.HttpContentExtensions.ReadAsAsync [T](HttpContent コンテンツ、タイプタイプ、IEnumerable ' 1つのフォーマッタ、IFormatterLogger formatterLogger、CancellationToken cancellationToken)\ R \ nは System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage 要求タイプタイプ、IEnumerableを「1つのフォーマッタ、IFormatterLogger formatterLoggerにおいて、 CancellationToken cancellationToken) "}
または私は、ヘッダー内のコンテンツ・タイプを設定しようとすると、私が取得:
ないMediaTypeFormatterが持つコンテンツから 『文字列』型のオブジェクトを読み取ることが可能ですメディアタイプ...
ここで、<は>私が設定したメディアタイプです。
この単純なPOSTの仕組みをどうすればいいですか?
これはおそらく質問に対するかなりまともな答えです。しかし、私は別のルートを行っており、答えを提示してこれを再テストする時間を本当に正当化することはできません。うまくいけば、他の誰かがこれが役に立つと思うことでしょう。 – Jeroen