При запуске функции запуска служебной шины Azure создается исключение InvalidOperationException для сообщения «Хост еще не запущен» - PullRequest
0 голосов
/ 23 октября 2018

У меня есть функция запуска служебной шины v.2, которая при попытке запуска выдает следующее исключение:

System.InvalidOperationException
  HResult=0x80131509
  Message=The host has not yet started.
  Source=Microsoft.Azure.WebJobs.Host
  StackTrace:
   at Microsoft.Azure.WebJobs.JobHost.StopAsync() in C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\JobHost.cs:line 121
   at Microsoft.Azure.WebJobs.Hosting.JobHostService.StopAsync(CancellationToken cancellationToken) in C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Hosting\JobHostService.cs:line 32
   at Microsoft.Extensions.Hosting.Internal.Host.<StopAsync>d__10.MoveNext()

Я искал, но не могу найти никого с похожей проблемой (иисправить).Я использую VS 15.8.7 со всеми обновленными расширениями и пакетами.

Вот как выглядит моя функция:

[FunctionName("ServiceBusListenerFunction")]
        public static void Run([ServiceBusTrigger("myTopic", "MySubscription", Connection = "MyConnection")]string mySbMsg, ILogger log)
        {
            log.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}");
        }

А вот мой local.settings.json:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "MyConnection": "UseDevelopmentStorage=true",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
  },
  "Host": {
    "LocalHttpPort": 7077
  }    
}

Я также попытался сделать следующее в файле launchSettings.json, но это не помогло:

{
  "profiles": {
    "MyProject": {
      "commandName": "Project",
      "executablePath": "C:\\Users\\[myUserName\\AppData\\Roaming\\npm\\node_modules\\azure-functions-core-tools\\bin\\func.dll",
      "commandLineArgs": "host start --port 7077"
    }
  }
}

У меня запущен Service Bus Explorer, и я создал вышеупомянутую тему и подписку на нее,Проект, в котором расположены функции, построен на основе .NET Standard 2.0.

Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения или вам нужна дополнительная информация.

РЕДАКТИРОВАТЬ: Я взял красный текст исключения, который ненадолго появляется в окне консоли, прежде чем он закроется (что происходит непосредственно перед тем, как я получу вышеупомянутое исключение), и он гласит:

Host initialized
A host error has occurred
System.Private.Uri: Value cannot be null
Parameter name: uriString
Stopping job host

При поиске я обнаружил это , но, похоже, мне не нужно менять атрибут, чтобы это работало.

Заранее благодарен за любую помощь.

Ответы [ 3 ]

0 голосов
/ 21 мая 2019

Одним из способов я решил проблему, удалив строку подключения из [ServiceBusTrigger] и вставив ее через файл local.settings.json.

в файле функций.[ServiceBusTrigger ("Your-Topics-Name", "SubscriptionName", Connection = "MyServiceBus")]

Внутри local.settings.json.

{"IsEncrypted": false, "Значения ": {" AzureWebJobsStorage ":" UseDevelopmentStorage = true "," AzureWebJobsMyServiceBus ":" строка подключения "," FUNCTIONS_WORKER_RUNTIME ":" dotnet "}}

  • примечание: имя подключения начинается«AzureWebJobs», чтобы вы могли поместить оставшееся имя.
0 голосов
/ 29 мая 2019

Запуск проекта под «Любой процессор» согласно этой записи исправил проблему для меня ...

http://activeintelligence.org/blog/archive/azure-functions-system-invalidoperationexception-the-host-has-not-yet-started/

0 голосов
/ 24 октября 2018

Проблема вызвана этим параметром

"MyConnection": "UseDevelopmentStorage=true"

UseDevelopmentStorage=true представляет строку подключения эмулятора хранилища, для триггера служебной шины используйте строку подключения служебной шины (такую ​​же, как в проводнике служебной шины или найдите ее вAzure portal ).

Некоторые улучшения:

В local.settings.json, LocalHttpPort почему-то не работает в VS, вы можете удалить его как commandLineArgs В файле launchSettings.json работает как положено.

AzureWebJobsDashboard теперь не требуется, поэтому его можно удалить без специального назначения.

В файле launchSettings.json удалите executablePath, что также недопустимо.Обычно этот параметр нам не нужен, поскольку VS по умолчанию использует последний CLI.

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