gpt4 book ai didi

c# - 路由模板与 Azure Functions 冲突

转载 作者:行者123 更新时间:2023-11-30 16:40:24 25 4
gpt4 key购买 nike

我有 2 个通过 Azure Functions 实现的 GET 端点

  • /products/{productId} :通过 id 获取产品
  • /products/status:获取产品集合的某些“状态”。

执行 GET 调用总是以“按 id 获取”函数结束。

如何创建这 2 个显式端点而不将“状态”视为 ID 值?我的印象是,如果路由与 uri 匹配,那么它优先。

与此问题相关 - https://github.com/MicrosoftDocs/azure-docs/issues/11755

无法对 Guid id 使用路由约束。

/products/{productId:guid} 消除函数调用的歧义,但无法将值绑定(bind)到参数。

最佳答案

fails to bind the value to the parameter

这是一个 issue已跟踪但尚未解决。

Route Constraints allow specifying datatypes for query string parameters on HttpTrigger route property. These constraints are only used to match the route. When using binding parameters datatype is converted to strings.

因此,如果您使用 Guid ProductId 接受输入参数,您将遇到错误 Invalidcast from 'System.String' to 'System.Guid'

解决方法是接受 guid 作为字符串,如果您需要 Guid 对象,可以使用 Guid.Parse(productId)

public static async Task<HttpResponseMessage> Run(..., Route = "product/{productId:guid}")]HttpRequestMessage req, string productId)

关于c# - 路由模板与 Azure Functions 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51445587/

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