【发布时间】:2017-08-04 04:58:57
【问题描述】:
我正在 VB 中创建一个 api 控制器类。我有一个非常简单的功能:
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 中尝试过,但我得到了:
{"Message":"请求包含实体主体但没有Content-Type 标题。推断的媒体类型“application/octet-stream”不是 支持此资源。","ExceptionMessage":"否 MediaTypeFormatter 可用于读取“字符串”类型的对象 来自具有媒体类型的内容 '应用程序/八位字节流'。","ExceptionType":"System.Net.Http.UnsupportedMediaTypeException","StackTrace":" 在 System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent 内容,类型类型,IEnumerable '1 格式化程序,IFormatterLogger formatterLogger, CancellationToken cancelToken)\r\n at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage 请求,类型类型,IEnumerable '1 格式化程序,IFormatterLogger formatterLogger, CancellationToken cancelToken)"}
或者当我尝试在标题中设置内容类型时,我得到:
没有 MediaTypeFormatter 可用于读取“字符串”类型的对象 来自具有媒体类型的内容...
<...> 是我设置的任何媒体类型。
如何使这个简单的 POST 工作?
【问题讨论】:
标签: vb.net asp.net-web-api fiddler