【发布时间】:2019-07-14 17:46:30
【问题描述】:
我有一个 Angular 7 应用程序,它带有一个用 VB 编码的 ASP.net web api 后端。我可以毫无问题地发布、放置和获取数据,但是当我尝试通过路由或 ID 访问数据时,我收到以下错误:
请求包含实体主体,但没有 Content-Type 标头。此资源不支持推断的媒体类型“application/octet-stream”。没有 MediaTypeFormatter 可用于从媒体类型为“application/octet-stream”的内容中读取“ProjectSummary”类型的对象。System.Net.Http。 System.Net.Http.HttpContentExtensions.ReadAsAsync[T] 处的 UnsupportedMediaTypeException(HttpContent 内容,类型类型,IEnumerable
1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken) at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable1 格式化程序,IFormatterLogger formatterLogger,CancellationToken cancelToken)
我想要做的是调用一个 SQL 函数,其中 :id 是一个从 api 传递的变量。它在 SQL Developer 中运行良好,但在我的 api 访问时却不行。这是我的功能的一部分:
Public Function GetValue(ByVal id As Integer, <FromBody()> ByVal psum As ProjectSummary)
Dim reslist As New List(Of Models.ProjectSummary)
'Dim res As String = String.Empty
Dim con As New OracleConnection(ConfigurationManager.ConnectionStrings("BOTDB").ConnectionString)
Dim cmd As New OracleCommand(CommandType.Text, con)
cmd.CommandText = "select PROJECT_ID, PROJECT_NAME, ROADBLOCKS
from TPMT_PROJECT WHERE PROJECT_ID = :id"
如果我想获取项目 ID 1 的数据,我是否应该能够通过转到 url .../api/ProjectData/1 来访问这些数据?
这是我的 WebApiConfig.vb 中的一个 sn-p:
' Web API routes
config.MapHttpAttributeRoutes()
config.Routes.MapHttpRoute(
name:="DefaultApi",
routeTemplate:="api/{controller}/{id}",
defaults:=New With {.id = RouteParameter.Optional}
)
任何帮助将不胜感激,因为我在这个问题上花费了大量时间。
【问题讨论】:
-
这个问题取决于您如何格式化 JSON、调用 Web API 方法和您使用的 HTTP 方法 (GET/POST)。如果要发送 JSON 数据,还可以尝试将
Content-Type设置为application/json;charset=UTF-8。 -
您好,哲也。如何设置内容类型?我对 POST 和 PUT 没有任何问题,因为我的 Angular 应用程序可以正确处理它们。只有当我向 GET 函数添加额外的参数或路由时。
标签: asp.net vb.net api web mediatypeformatter