gpt4 book ai didi

c# - 错误 : Action has more than one parameter bound from request body

转载 作者:太空狗 更新时间:2023-10-29 22:56:37 26 4
gpt4 key购买 nike

我在我的 ASP.Net MVC 项目的 Controller 中写入了一个新方法,但出现以下错误。我认为 InvalidOperationException 来自 Swagger。我将其标记为“忽略的 Api”,希望它会跳过该方法,但错误仍然存​​在:

[ApiExplorerSettings(IgnoreApi = true)]
public decimal CalculatePriceWithCampaign(
BeverageCapacityCampaign campaign,
BeverageCapacity capacity,
int count = 1)
{
switch (campaign.DiscountType)
{
case DiscountType.Fixed:
return (capacity.CapacityPrice - campaign.DiscountValue) * count;
case DiscountType.Percentage:
return (capacity.CapacityPrice * count) * campaign.DiscountValue;
default:
return capacity.CapacityPrice;
}
}

但是在运行时出现这个错误:

An unhandled exception occurred while processing the request.

InvalidOperationException: Action 'Gorilla.WebApi.Source.Controller.Campaigns.BeverageCapacityCampaignController.CalculatePriceWithCampaign (Gorilla.WebApi)' has more than one parameter that was specified or inferred as bound from request body. Only one parameter per action may be bound from body. Inspect the following parameters, and use 'FromQueryAttribute' to specify bound from query, 'FromRouteAttribute' to specify bound from route, and 'FromBodyAttribute' for parameters to be bound from body:
BeverageCapacityCampaign campaign
BeverageCapacity capacity

我可以找到建议检查 nugets 的信息,但我所有的 Nugets 都是最新的。

最佳答案

错误来自模型绑定(bind),与 Swagger 无关(ApiExplorerSettings 属性的存在对错误没有影响)。

您有两个复杂的参数。即复杂类型

BeverageCapacityCampaign 
BeverageCapacity

模型绑定(bind)默认从请求的正文中绑定(bind)复杂参数。但是,每个 Action 只能从主体绑定(bind)一个参数

所以你需要要么

  1. 将它们组合成一个只包装/保存两个参数的类作为属性 - 并将它们与主体绑定(bind)(作为一个对象)
  2. 决定从 body 绑定(bind)哪个,从 body 绑定(bind)哪个路由或查询并将属性 [FromRoute] 或 [FromQuery] 添加到其中一个,将 [FromBody] 添加到另一个。
System.Web.Http.Description 中的

ApiExplorerSettings 将忽略来自帮助页面或其他任何内容(可能是招摇)的属性操作......但你仍然会得到这个异常 - 来自模型绑定(bind)级别的问题

关于c# - 错误 : Action has more than one parameter bound from request body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53854416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com