【发布时间】:2022-02-16 16:35:00
【问题描述】:
我正在运行具有运行时 4、.NET 6.0 的 azure 函数应用程序。
当我在本地运行的环境中调用函数应用程序时,req.HttpContext.GetServerVariable() 始终返回 null,因为 IServerVariablesFeature 在context.Features 列表中不受支持。
当我将它部署到函数应用的 azure 托管实例时,变量会正确填充。我进行了广泛的研究,但无法确定这是否是故意不支持的,或者我是否在本地环境中缺少某种形式的附加配置。
这是一个测试函数,它尝试读取 3 个不同的服务器变量并将它们作为字符串返回,并且可以使用 postman 中的 get 请求或通过浏览器 http://localhost:7071/api/GetServerVariable 调用:
public static class TestFunction
{
[FunctionName("GetServerVariable")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "GetServerVariable")] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
var url = req.HttpContext.GetServerVariable("URL");
var remoteAddr = req.HttpContext.GetServerVariable("REMOTE_ADDR");
var https = req.HttpContext.GetServerVariable("HTTPS");
var response = $"Current server variables: URL: {url} - REMOTE_ADDR: {remoteAddr} - HTTPS: {https}";
log.LogWarning(response);
return new OkObjectResult(response);
}
}
【问题讨论】:
标签: c# azure-functions httprequest