在浏览器中调用Web API时,无法读取MediaTypeFormatter来读取

时间:2019-02-20 22:46:39

标签: asp.net vb.net api web mediatypeformatter

我有一个Angular 7应用程序,其ASP.net Web API后端以VB编码。我可以毫无问题地发布,放置和获取数据,但是当我尝试通过路线或ID访问数据时,这是我收到的错误:

  

该请求包含一个实体主体,但没有Content-Type头。此资源不支持推断的媒体类型'application / octet-stream'。没有MediaTypeFormatter可从媒体类型为'application / octet-stream'.System.Net.Http的内容中读取类型为'ProjectSummary'的对象。 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, IEnumerable 1格式器,IFormatterLogger formatterLogger,CancellationToken cancelledToken)

我想做的是调用一个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的摘录:

  ' Web API routes
    config.MapHttpAttributeRoutes()

    config.Routes.MapHttpRoute(
        name:="DefaultApi",
        routeTemplate:="api/{controller}/{id}",
        defaults:=New With {.id = RouteParameter.Optional}
    )

任何帮助都将不胜感激,因为我在这一问题上花费了大量时间。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。我有点不好意思,但是问题出在我的getValue函数的声明中哈哈。

我有 Public Function GetValue(ByVal id As Integer, <FromBody()> ByVal psum As ProjectSummary)

但应该是

Public Function GetValue(ByVal id As Integer) As ProjectSummary()

简单的监督。