Извините за длинный пост, я просто хотел предоставить всю информацию и ответить на вопросы, прежде чем они появятся.
Работа над преобразованием функции Azure v1 .NET Framework 4.6.1 в DotNetStandard 2.0 для расширения внедрения зависимостей. Во время выполнения я получаю исключение в консоли, которое считывает ошибку, что строка подключения отсутствует, но она находится в local.settings.json, как это было в v1. Согласно документации, по умолчанию должно соответствовать значению AzureWebJobsServiceBus в файле local.settings.json и ApplicationSettings в Azure.
Произошла ошибка хоста
Microsoft.Azure.WebJobs.ServiceBus: строка подключения Microsoft Azure WebJobs SDK ServiceBus 'AzureWebJobsServiceBus' отсутствует или пуста.
Я получаю исключение времени выполнения сразу после того, как в консоли в файле JobHost.cs появилось сообщение «Хост еще не запущен».
в Microsoft.Azure.WebJobs.JobHost.StopAsync () в C: \ projects \ azure-webjobs-sdk-rqm4t \ src \ Microsoft.Azure.WebJobs.Host \ JobHost.cs: строка 121
в Microsoft.Azure.WebJobs.Hosting.JobHostService.StopAsync (CancellationToken cancellationToken) в C: \ projects \ azure-webjobs-sdk-rqm4t \ src \ Microsoft.Azure.WebJobs.Host \ Hosting \ JobHostService.cs:
в Microsoft.Extensions.Hosting.Internal.Host.StopAsync (CancellationToken cancellationToken)
Продолжение этого исключения дает мне следующее «Контейнер утилизирован и не должен использоваться: Контейнер утилизируется.
Вы можете включить Dispose stack-trace в сообщение через:
container.With (rules => rules.WithCaptureContainerDisposeStackTrace ()) "
at DryIoc.Throw.It (ошибка Int32, объект arg0, объект arg1, объект arg2, объект arg3) в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container .cs: строка 8991
в DryIoc.Container.ThrowIfContainerDisposed () в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: строка 411
в DryIoc.Container.ResolveAndCacheDefaultFactoryDelegate (Тип serviceType, IfUnresolved ifUnresolved) в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: строка 200
в DryIoc.Container.DryIoc.IResolver.Resolve (Тип serviceType, IfUnresolved ifUnresolved) в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: строка 195
в Microsoft.Azure.WebJobs.Script.WebHost.DependencyInjection.JobHostServiceProvider.GetService (Тип serviceType, IfUnresolved ifUnresolved) в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ostrovInost.Hid: DependencySH 101
в Microsoft.Azure.WebJobs.Script.WebHost.DependencyInjection.JobHostServiceProvider.GetRequiredService (Тип serviceType) в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ JobrovostService: JobHostcser
в Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService (поставщик IServiceProvider, Тип serviceType)
в Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService [T] (поставщик IServiceProvider)
в Azure.Functions.Cli.Actions.HostActions.StartHostAction.RunAsync () в C: \ azure-functions-cli \ src \ Azure.Functions.Cli \ Actions \ HostActions \ StartHostAction.cs: строка 241
.
local.settings.json (среди многих значений):
...,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"AzureWebJobsServiceBus": "Endpoint=sb://[my_name].servicebus.windows.net/;SharedAccessKeyName=LocalManage;SharedAccessKey=[my_key]",
...
Мой файл csproj читает:
<TargetFramework>netstandard2.0</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
Я работаю в Visual Studio 2017 версии 15.9.9
Функции Azure и инструменты веб-заданий: 15.10.2046.0
Edit:
Не похоже, что конвертация из v1 в v2
Шаги отдыха
- Используя Visual Studio 2017, перейдите в Файл -> Создать -> Проект -> Функции Azure -> ОК
- Выберите Функции Azure v2 (.NET Core)
- Выберите пусто
- Щелкните правой кнопкой мыши Project -> Add -> New Azure Function
- Выберите триггер очереди служебной шины
- Перейдите на local.settings.json и добавьте ServiceBusConnectionString
- Начать отладкуи вы получите исключение выше.