我正在努力弄清事情(抱歉愚蠢的问题)。 我收到了来自Apple设备客户端到我的wep api的消息请求,我想知道如何处理它。在.NET Framework中,我曾经使用以下方法处理消息:
public async Task<HttpResponseMessage> Server(HttpRequestMessage request)
{
var message = await request.Content.ReadAsStringAsync();
这工作正常,但移至.NET Core,请求始终为空。因此,我继续进行此操作(此操作在下面进行):
[HttpPut]
[Route("server")]
public async Task<IActionResult> DoSomething()
{
var requestBody = await HttpContext.Request.GetRawBodyStringAsync();
}
但是我想知道上面是否是处理此类请求的正确方法,并且我也看到了[FromBody]的使用,并且想知道最好使用它,但这对我不起作用。
[HttpPut]
[Route("server")]
public async Task<IActionResult> DoSomething([FromBody] string requestBody)
{
//doesn't get called?
}
答案 0 :(得分:1)
您操作中的参数名称需要与请求中发送的属性名称匹配。
例如如果请求正在发送:
varA=string1&varB=string2&varc=string3
然后您的操作方法应如下所示:
[HttpPut]
[Route("server")]
public async Task<IActionResult> DoSomething([FromBody] string varA,[FromBody] string varB,[FromBody] string varC)
{
}
或者,您可以为这些类型的请求提供模型类:
class RequestModel{
public string VarA {get;set;}
public string VarB {get;set;}
public string VarC {get;set;}
}
[HttpPut]
[Route("server")]
public async Task<IActionResult> DoSomething([FromBody] RequestModel request)
{
}