F# MvcWebApi - 邮递员 - FromBody 始终为 null

Ala*_*gan 2 asp.net-mvc f# postman

我刚刚开始尝试使用 F# MvcWebApi。我从基本模板开始,并设法将其工作到将数据放置在邮递员请求正文中的程度。每次我尝试访问从主体传递的任何值时,由于某种原因它们总是为空,即(在下面的情况下数据将始终为空)任何人都可以帮助我解决这个问题

值控制器代码

type ValuesController() =
    inherit ApiController()

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

   //Works
   member x.Post ([<FromBody>] data:string) = "Succesful"
Run Code Online (Sandbox Code Playgroud)

我正在使用邮递员调用 api 在此输入图像描述

在此输入图像描述

Mar*_*ann 5

虽然我不知道Postman,但看起来您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
Run Code Online (Sandbox Code Playgroud)

您还需要将此语句添加到您的配置中

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver <-
    Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
Run Code Online (Sandbox Code Playgroud)