如何在http post和net 6框架中声明包装的请求

问题描述 投票:0回答:1

我正在致力于将 wcf 应用程序从 net 4.8 迁移到 6。 基本要求是所有客户必须继续工作而不做任何改变。但对于某些方法,行为是不同的。

例如在 net 4.8 中我们有这个 web 方法:

public ContractResult GetContract(int idContract)
{
   return a contract
}

客户端调用post中的方法:

http://mywebserver/api/my.svc/GetContract

传入体内:

{"idContract":"245"}

这是net 6版本:

[HttpPost]
[Route("GetContract")]
public ContractResult GetContract(int idContract)
{
  return a contract
}

上面的相同调用返回 statuscode 200 但参数contractId始终为0,使其工作的唯一方法就是以这种方式调用:

http://mywebserver/api/my.svc/GetContract?idContract=245

我尝试添加属性: [WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest)]

但它似乎不存在于net 6中。

如何对 Net 6 框架说我希望在正文请求中将参数序列化为 json?

c# wcf asp.net-web-api .net-6.0
1个回答
0
投票

您可以将代码修改为如下所示:

public class contractId
{
   public int idContract { get; set; }
}





[HttpPost]
[Route("GetContract")]
public ContractResult GetContract([FromBody]contractId idContract)
{
 if(idContract.idContract==245)
  return a contract
}

然后发送json

{"idContract":245}
© www.soinside.com 2019 - 2024. All rights reserved.