Функция Azure Преобразование v1 в v2 DotNetStandard AzureWebJobsServiceBus отсутствует или пусто - PullRequest
2 голосов
/ 24 мая 2019

Извините за длинный пост, я просто хотел предоставить всю информацию и ответить на вопросы, прежде чем они появятся.

Работа над преобразованием функции 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

Шаги отдыха

  1. Используя Visual Studio 2017, перейдите в Файл -> Создать -> Проект -> Функции Azure -> ОК
  2. Выберите Функции Azure v2 (.NET Core)
  3. Выберите пусто
  4. Щелкните правой кнопкой мыши Project -> Add -> New Azure Function
  5. Выберите триггер очереди служебной шины
  6. Перейдите на local.settings.json и добавьте ServiceBusConnectionString
  7. Начать отладкуи вы получите исключение выше.

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Вы должны добавить имя ключа из файла настроек, чтобы заставить его работать сейчас. См. Этот выпуск GitHub.

[ServiceBusTrigger("mytopic",` "mysubscription", Connection = "ConnectionStringSettingName")]

Тогда в вашем local.settings.json

  ...,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "ConnectionStringSettingName": "Endpoint=sb://[my_name].servicebus.windows.net/;SharedAccessKeyName=LocalManage;SharedAccessKey=[my_key]",
...
0 голосов

Я видел ту же самую проблему, когда мой local.settings.json файл был искажен.Верните только свои настройки назад, когда все работало, и все должно быть хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...