Похоже, admin
в маршрутах зарезервировано строго для хоста времени выполнения функций Azure.
В настоящее время эта проблема возникает у любых маршрутов, начинающихся с admin
.
API администратора, предоставляемый функциями host:
GET https://<functionappname>.azurewebsites.net/admin/host/status
Ответ:
{
"id": "bad1ecf31b47-2137340777",
"state": "Running",
"version": "2.0.1.0",
"versionDetails": "2.0.1.0-beta1 Commit hash: N/A"
}
Подробнее об этом: https://github.com/Azure/azure-functions-host/wiki/Admin-API
Обходной путь
Вы можете изменить имя маршрута на v2/admin/Heartbeat
в коде функции.
Пример:
[FunctionName("ExampleAdminRoute")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "v2/admin/Heartbeat")]HttpRequest req, ILogger log)
{
//your admin function code
}
Затем вы можете добавить прокси к маршруту (подробнее о прокси функции Azure здесь ). Прокси хранятся в proxies.json
.
Убедитесь, что этот файл скопирован в выходной каталог сборки, т.е. включен в файл .csproj.
Пример proxies.json
:
{
"$schema": "http://json.schemastore.org/proxies",
"proxies": {
"AdminProxy": {
"matchCondition": {
"methods": [ "GET" ],
"route": "/api/admin/Heartbeat"
},
"backendUri": "https://localhost/api/v2/admin/Heartbeat"
}
}
}
Теперь, когда вы запуститеПриложение функций, вы должны увидеть консольный вывод, например:
Now listening on: http://0.0.0.0:7071
Application started. Press Ctrl+C to shut down.
Listening on http://0.0.0.0:7071/
Hit CTRL-C to exit...
Http Functions:
AdminProxy: http://localhost:7071/api/admin/Heartbeat
ExampleAdminRoute: http://localhost:7071/api/v2/admin/Heartbeat
Все запросы, поступающие на api/admin/Heartbeat
, будут автоматически перенаправлены на api/v2/admin/Heartbeat
.
Прокси достаточно гибкие, чтобы поддерживать различные запросы (GET / POST) с параметрами и т. Д.