我正在VB中创建一个api conroller类。我有一个非常简单的功能:
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"})我也在Fiddler 4上尝试过这个,但是我得到了:
{“消息”:“请求包含实体体,但没有内容类型标头。此资源不支持推断的媒体类型‘application/octet’。“,”ExceptionMessage“:”没有MediaTypeFormatter可以从媒体类型‘application/octet’从内容中读取'String‘类型的对象。“,"StackTrace":”at System.Net.Http.HttpContentExtensions.ReadAsAsyncT(HttpContent content,type,IEnumerable '1 formatters,IFormatterLogger formatterLogger,\r\n在System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage请求下,键入类型,IEnumerable '1格式化程序,IFormatterLogger formatterLogger,CancellationToken cancellationToken)"}
或者,当我试图在标题中设置内容类型时,我会得到:
没有MediaTypeFormatter可以从媒体类型的内容中读取类型为“String”的对象.
其中<...>是我设置的任何媒体类型。
我如何使这个简单的职位工作?
发布于 2017-03-14 01:20:28
看起来,您为API使用的框架不知道如何根据在请求中设置的内容类型头来解析POST请求正文的内容。
还有,你的API controller may not know how to parse plain text。
您可以手动添加受支持的内容类型,也可以根据上述链接中的一个答案手动读取请求内容。或者您可以将控制器更改为accept a form post like so。
https://stackoverflow.com/questions/42776143
复制相似问题