Получить Нет MediaTypeFormatter доступен для чтения при вызове веб-API в браузере - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть приложение Angular 7 с серверным веб-интерфейсом ASP.net, закодированным в VB.Я могу публиковать, помещать и получать данные без проблем, но когда я пытаюсь получить доступ к данным по маршруту или идентификатору, я получаю сообщение об ошибке:

Запрос содержит тело объекта, но нетЗаголовок Content-Type.Предполагаемый тип мультимедиа «application / octet-stream» не поддерживается для этого ресурса. Нет MediaTypeFormatter для чтения объекта типа «ProjectSummary» из содержимого с типом медиа «application / octet-stream». System.Net.Http.UnsupportedMediaTypeException в System.Net.Http.HttpContentExtensions.ReadAsAsync [T] (содержимое HttpContent, тип Type, IEnumerable 1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken) at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable 1 форматеры, IFormatterLogger formatterLogger, CancellationToken cancellationToken)

1006 * я пытаюсь сделать 100вызовите функцию 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"

Если я хочу получить данные для идентификатора проекта 1, я не смогу получить доступ к этим данным, перейдя по ссылке ... / 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 голосов
/ 21 февраля 2019

Я выяснил проблему.Я немного смущен, но проблема была в объявлении моей функции getValue, ха-ха.

У меня было Public Function GetValue(ByVal id As Integer, <FromBody()> ByVal psum As ProjectSummary)

, но это должно быть

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

Простойнедосмотр.

...