【发布时间】:2020-08-22 14:16:30
【问题描述】:
我的 Azure Function 的 Run 方法的代码是这样的:
public static void Run([HttpTrigger("get")] HttpRequest req, ILogger log) {
string parameter = req.Query["parameter"];
if (string.IsNullOrEmpty(parameter)) {
throw new ArgumentNullException("Parameter must be set.");
}
log.LogInformation(parameter);
}
我在运行Function并将参数传递给HTTP请求时有以下几种情况:
- 不带参数的 HTTP GET (
/api/ServiceBusOutput):异常(正确) - 未设置参数的 HTTP GET (
/api/ServiceBusOutput?parameter):异常(正确) - HTTP GET 参数为空字符串 (
/api/ServiceBusOutput?parameter=""):成功但应该失败(URL 变为/api/ServiceBusOutput?parameter=%22%22) - HTTP GET 参数为字符串 (
/api/ServiceBusOutput?parameter="something"):成功(正确)
如何使第三次测试失败?
【问题讨论】:
-
它失败的原因是因为从纯粹的URI角度来看,“”的值是参数的有效值。 Azure函数的行为也是正确的,你需要照顾函数内部的逻辑
-
你试过
string.IsNullOrWhiteSpace(string)吗?顺便说一句%22是一个 urlencoded"
标签: c# azure-functions httprequest http-get azure-function-app