gpt4 book ai didi

c# - 为什么我的带有双参数的 Web API 方法没有被调用?

转载 作者:太空狗 更新时间:2023-10-29 20:47:29 25 4
gpt4 key购买 nike

我有一个采用两个双参数的 Web API 方法:

存储库接口(interface):

public interface IInventoryItemRepository
{
. . .
IEnumerable<InventoryItem> GetDepartmentRange(double deptBegin, double deptEnd);
. . .
}

存储库:

public IEnumerable<InventoryItem> GetDepartmentRange(double deptBegin, double deptEnd)
{
// Break the doubles into their component parts:
int deptStartWhole = (int)Math.Truncate(deptBegin);
int startFraction = (int)((deptBegin - deptStartWhole) * 100);
int deptEndWhole = (int)Math.Truncate(deptEnd);
int endFraction = (int)((deptBegin - deptEndWhole) * 100);

return inventoryItems.Where(d => d.dept >= deptStartWhole).Where(e => e.subdept >= startFraction)
.Where(f => f.dept <= deptEndWhole).Where(g => g.subdept >= endFraction);
}

Controller :

[Route("api/InventoryItems/GetDeptRange/{BeginDept:double}/{EndDept:double}")]
public IEnumerable<InventoryItem> GetInventoryByDeptRange(double BeginDept, double EndDept)
{
return _inventoryItemRepository.GetDepartmentRange(BeginDept, EndDept);
}

当我尝试调用此方法时,通过:

http://localhost:28642/api/inventoryitems/GetDeptRange/1.1/99.99

...我得到,“HTTP 错误 404.0 - 未找到您要查找的资源已被删除、更名或暂时不可用。"

相关方法运行良好(此 Controller 上的其他方法)。

最佳答案

我能够在我的机器上重现它。

只需在 URL 末尾添加一个/即可为我更正它。看起来路由引擎将其视为 .99 文件扩展名,而不是输入参数。

http://localhost:28642/api/inventoryitems/GetDeptRange/1.1/99.99/

此外,您似乎可以注册一个自定义路由,在使用内置帮助程序生成链接时,该路由会自动在 URL 的末尾添加尾部斜线。我没有亲自测试过这个: stackoverflow Add a trailing slash at the end of each url

最简单的解决方案是将以下行添加到您的 RouteCollection。不确定如何使用该属性,但在您的 RouteConfig 中,您只需添加:

routes.AppendTrailingSlash = true;

关于c# - 为什么我的带有双参数的 Web API 方法没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21387974/

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