2015-03-18 4 views
1

Я только начал начинать играть с F # MvcWebApi. Я начал с базового шаблона и сумел довести эту работу до такой степени, что я помещаю данные в тело запроса от почтальона. Каждый раз, когда я пытаюсь получить доступ к любым значения, передаваемые из тела, они всегда нулевые по каким-то причинам, т.е. (В случае ниже данных всегда будет нулевым), может ли один помочь мне с этим, пожалуйста,F # MvcWebApi - Postman - FromBody всегда null

ValueController код

type ValuesController() = 
    inherit ApiController() 

    //Always returs null 
    member x.Post ([<FromBody>] data:string) = data 

    //Works 
    member x.Post ([<FromBody>] data:string) = "Succesful" 

Я использую почтальона заехать в АНИ enter image description here

enter image description here

+0

Я не думаю, что «FromBody» Атрибут является правильным для Вас в этом случае - вы пробовали без него (или просто установить точку останова и посмотрите на переменные вашего контроллера, запрос, ...) – Carsten

+0

Если я выйду из тела, я получу сообщение об ошибке «Сообщение»: «HTTP-ресурс не найден, что соответствует запросу URI« http » : // localhost: 50442/api/values ​​'. "," –

ответ

4

Пока я не знаю, почтальон, это Лоо ks, как будто вы устанавливаете Content-Type в "application/json" в обоих случаях. Когда вы скажете, что вы публикуете «application/json» (или «application/xml»), Web API попытается выполнить , связав ваши структурированные данные с «моделью».

Вы попробовали вместо записи F #?

[<CLIMutable>] 
type DataModel = { data : string } 

type ValuesController() = 
    inherit ApiController() 

    member x.Post (dataModel : DataModel) = x.Ok data 

Вам также нужно add this statement to your configuration:

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver <- 
    Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() 
+0

Привет, у меня нет опции (x.OK), но я попробовал элемент x.Post (dataModel: DataModel) = dataModel.data и thats все еще null –

+0

@AlanMulligan Это [метод на ApiController] (https://msdn.microsoft.com/en-us/library/dn314591.aspx), но я неправильно вспомнил обложку. Починю. –

+0

@AlanMulligan Вместо Postman, можете ли вы отправить свой HTTP-запрос и ответ в виде простого текста, чтобы упростить воспроизведение вашей проблемы? –

 Смежные вопросы

  • Нет связанных вопросов^_^