Ошибка конфигурации при запуске приложения-функции Azure
Приложение функции не может работать с ошибкой конфигурации NULL
Разработал функцию визуальной студии для чтения ответа API. Он работает нормально при локальном запуске, но не работает при публикации в качестве приложения-функции Azure
Ниже моя функция входа, которая запускается при входящем HTTP-запросе:
public static async Task<Bolean> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
ожидается, что он будет работать нормально.. ошибка вместо этогоУ запроса нет связанного объекта конфигурации или предоставленная конфигурация была нулевой.
3 ответа
У меня была аналогичная проблема. Размещение этого решения на случай, если оно кому-то поможет.
Я добавил в Visual Studio проект стандартного приложения-функции Azure, и пока он работал на моем локальном компьютере, я продолжал получать ошибку внутреннего сервера 500 из развернутой версии Azure.
Ответ об ошибке был таким же при вызове функции с помощью Postman OR при использовании
Code + Test
раздел при POSTing действительного тела запроса.
Связанная трассировка Application Insights выявила следующие сведения об ошибке:
Решение, которое сработало для меня, изменило
Runtime version
(ваше приложение-функция>
Configuration
>
Function runtime settings
>
Runtime version
) от текущего значения по умолчанию
~3
к
~1
.
Изменение этого значения привело к перезапуску Службы в Azure, и внутренняя ошибка сервера 500 была устранена.
Эта ссылка на docs.microsoft.com Как настроить таргетинг на версии среды выполнения Функций Azure содержит дополнительные сведения об этом параметре.
Это также может быть вызвано несколькими версиямиSystem.Web.Http
загружается, что можно проверить с помощью окна модулей в Visual Studio:
Один из способов, которым это может произойти, — это ссылка (или наличие зависимостей, которые ссылаются) на любую версиюMicrosoft.AspNet.WebApi.Core
кроме версии 5.2.3, которая используется Функциями Azure (v1).
Потенциальный обходной путь — принудительно вернуть версию, добавив ее в файл проекта (.csproj):
<!-- work around package version conflict with Azure Functions -->
<PackageReference Include="Microsoft.AspNet.WebApi.Core" Version="5.2.3" NoWarn="NU1605" />
System.InvalidOperationException: у запроса нет связанного объекта конфигурации, или предоставленная конфигурация была нулевой.
При тестировании запроса на стороне http-сервера вам нужно HttpConfiguration
,
Чтобы это исправить, нам нужно добавить HttpConfiguration
Объект через словарь свойств, как показано ниже:
var configuration = new HttpConfiguration();
var request = new System.Net.Http.HttpRequestMessage();
req.Properties[System.Web.Http.Hosting.HttpPropertyKeys.HttpConfigurationKey] = configuration;
Для более подробной информации, вы можете обратиться к этой статье.