Azure Functions 无法命中 HttpTrigger
Azure Functions Not able to hit HttpTrigger
我有一个带有 HttpTrigger 的简单 Azure 函数,如下所示:
[FunctionName("Heartbeat")]
public async Task<IActionResult> Heartbeat(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "heartbeat")] HttpRequest req,
ILogger log)
{
log.Log(LogLevel.Information, "Received heartbeat request");
var status = await _healthCheck.CheckHealthAsync();
return new OkObjectResult(Enum.GetName(typeof(HealthStatus), status.Status));
}
local.settings.json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=false",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"APPINSIGHTS_INSTRUMENTATIONKEY": "*****"
},
"ConnectionStrings": {
"ServiceDb": "Server=.;Initial Catalog=Acquire;Integrated Security=True;"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
当我 运行 本地函数时,我能够在 Heartbeat() 中设置断点并获得 200OK。但是,当它部署到 Azure 时,它不起作用,我收到 404 Not Found。
本地:
蔚蓝:
问题是什么?为什么我不能执行 HttpTrigger?
另外,有没有办法在 Azure 中查看 local.settings.json 配置?我虽然这些设置会以某种方式从 Azure 中的 local.settings.json 填充(如连接字符串),但它们是空白的。有没有办法在 Azure 中显示这些设置?
is there a way to view local.settings.json configururation in Azure?
Azure 中没有 local.settings.json
,因此名称为“本地”。
您应该在您的应用程序设置中添加同名设置。
azure应该有一个选项给你功能url。应该看起来像这样
我找到了解决办法。我的问题是运行时版本设置为:~1 而不是 ~3。我必须对 IOptions 进行绑定的另一个更改是编辑 project,并修改这些选项:
<Content Include="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
要使日志记录工作:
https://nuggets.hammond-turner.org.uk/2019/10/tuesday-quickie-ilogger-in-azure.html
我添加了这个,现在我看到所有日志都正常了:
{
"version": "2.0",
"logging": {
"logLevel": {
"ServiceLogger": "Information"
}
}
}
但其他用户的所有回答都让我走上了正确的道路。
我有一个带有 HttpTrigger 的简单 Azure 函数,如下所示:
[FunctionName("Heartbeat")]
public async Task<IActionResult> Heartbeat(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "heartbeat")] HttpRequest req,
ILogger log)
{
log.Log(LogLevel.Information, "Received heartbeat request");
var status = await _healthCheck.CheckHealthAsync();
return new OkObjectResult(Enum.GetName(typeof(HealthStatus), status.Status));
}
local.settings.json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=false",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"APPINSIGHTS_INSTRUMENTATIONKEY": "*****"
},
"ConnectionStrings": {
"ServiceDb": "Server=.;Initial Catalog=Acquire;Integrated Security=True;"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
当我 运行 本地函数时,我能够在 Heartbeat() 中设置断点并获得 200OK。但是,当它部署到 Azure 时,它不起作用,我收到 404 Not Found。
本地:
蔚蓝:
问题是什么?为什么我不能执行 HttpTrigger?
另外,有没有办法在 Azure 中查看 local.settings.json 配置?我虽然这些设置会以某种方式从 Azure 中的 local.settings.json 填充(如连接字符串),但它们是空白的。有没有办法在 Azure 中显示这些设置?
is there a way to view local.settings.json configururation in Azure?
Azure 中没有 local.settings.json
,因此名称为“本地”。
您应该在您的应用程序设置中添加同名设置。
azure应该有一个选项给你功能url。应该看起来像这样
我找到了解决办法。我的问题是运行时版本设置为:~1 而不是 ~3。我必须对 IOptions 进行绑定的另一个更改是编辑 project,并修改这些选项:
<Content Include="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
要使日志记录工作: https://nuggets.hammond-turner.org.uk/2019/10/tuesday-quickie-ilogger-in-azure.html
我添加了这个,现在我看到所有日志都正常了:
{
"version": "2.0",
"logging": {
"logLevel": {
"ServiceLogger": "Information"
}
}
}
但其他用户的所有回答都让我走上了正确的道路。