How to specify a query parameter in a custom HTTP route of an Azure Function?(如何在 Azure Function 的自定义 HTTP 路由中指定查询参数?)
问题描述
我有一个 Azure 函数,我想设置一个自定义 HTTP 端点.在回答这个 SO 问题,我最终得到了这样的结果:
I have an Azure Function and I want to set a custom HTTP endpoint. Following the answer to this SO question, I ended up with something like this:
[FunctionName("DoSomething")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "v1/tenants/{tenantId}/locations/{locationId}/products?manufacturer={manufacturer}")]
HttpRequest request, ILogger logger, string tenantId, string locationId, string manufacturer)
{
//
}
但是,该路由不被 Webjob 接受:
However, the route is not accepted by the Webjob:
"v1/tenants/{tenantId}/locations/{locationId}/products?manufacturer={manufacturer}"
原因是因为问号'?':
The reason is because of the question mark '?':
创建名为DoSomething"的路由时出错,并且模板'api/v1/tenants/{tenantId}/locations/{locationId}/products?manufacturer={manufacturer}'.文字部分 'products?manufacturer=' 无效.文字部分不能包含?"特点.参数名称:routeTemplate文字部分 'products?manufacturer=' 无效.文字部分不能包含?"字符.
An error occurred while creating the route with name 'DoSomething' and template 'api/v1/tenants/{tenantId}/locations/{locationId}/products?manufacturer={manufacturer}'. The literal section 'products?manufacturer=' is invalid. Literal sections cannot contain the '?' character. Parameter name: routeTemplate The literal section 'products?manufacturer=' is invalid. Literal sections cannot contain the '?' character.
问题
如何在 Azure Function 的自定义 HTTP 端点中指定查询参数?
How can I specify a query parameter in a custom HTTP endpoint of my Azure Function?
推荐答案
恐怕不能把查询参数放到Route里.
I am afraid it's not possible to put query parameter in Route.
Microsoft.AspNetCore.Routing:文字部分 'products?manufacturer=' 无效.文字部分不能包含?"字符.
Microsoft.AspNetCore.Routing: The literal section 'products?manufacturer=' is invalid. Literal sections cannot contain the '?' character.
它是 ASP.NET Routing 的内置限制,Azure Function 使用它来构建 Http 触发器的路由.
It's a built-in restriction of ASP.NET Routing, which is used by Azure Function to build route for Http trigger.
允许我将值作为 Run 的方法参数之一获取,而不是戳到 HttpRequest 实例
allow me to get the value as one of the Run's method parameters instead of poking at the HttpRequest instance
如果是你想在路由中放入查询参数的原因,我建议你添加 IDictionary<string, string>在方法签名中查询
,并使用query["manufacturer"]
来访问函数代码中的参数.但老实说,它与 request.Query["manufacturer"]
几乎相同.
If it's the reason why you want to put query parameter in route, I would suggest you add IDictionary<string, string> query
in method signature and use query["manufacturer"]
to access the parameter in function code. But honestly it's almost the same as request.Query["manufacturer"]
.
或者您可能必须遵循建议,将查询参数转换为 products/{productId}
之类的路由.
Or you may have to follow the recommendation, transform the query parameter to route like products/{productId}
.
这篇关于如何在 Azure Function 的自定义 HTTP 路由中指定查询参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在 Azure Function 的自定义 HTTP 路由中指定查询参数?
基础教程推荐
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- rabbitmq 的 REST API 2022-01-01
- 将 XML 转换为通用列表 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- MS Visual Studio .NET 的替代品 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01
- c# Math.Sqrt 实现 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01