2017-03-23 68 views
5

Utworzono aplikację funkcji Azure w programie Visual Studio 2015. Aplikacja ma wyzwalacz dla kolejek magistrali usług. Aplikacja działa idealnie, gdy uruchomię ją lokalnie. Jest w stanie odczytać dane z kolejki magistrali usług (skonfigurowane za pomocą zmiennej o nazwie AzureSBConnection) i zalogować ją do mojej bazy danych.Łańcuch połączenia usługi Azure WebJobs SDK ServiceBus "AzureWebJobsAzureSBConnection" brakuje lub jest pusty

Ale to daje mi następujący błąd podczas wdrożony w Azure:

Function ($ServiceBusQueueTriggerFunction) Error: Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.ServiceBusQueueTriggerFunction'. Microsoft.Azure.WebJobs.ServiceBus: Microsoft Azure WebJobs SDK ServiceBus connection string 'AzureWebJobsAzureSBConnection' is missing or empty.

Zauważ, że moje połączenie nazywa AzureSBConnection i nie AzureWebJobsAzureSBConnection. Ponadto połączenie działa lokalnie. Na koniec wdrożony plik wygląda dokładnie tak, jak plik lokalny.

Struktura Visual Studio wygląda następująco:

Visual Studio Structure

Plik function.json ma kilka ustawień, jak pokazano poniżej:

FUnction.json

Następnie w AppSettings. plik json, mam następujące:

App Settings

W celu wdrożenia, zaimportowałem pliki do lokalizacji D: \ home \ site \ wwwroot dla mojej aplikacji Function na platformie Azure. Ostateczna struktura w Kudu wygląda następująco:

wwwroot

A jeśli pójdę w moim folderze funkcji:

enter image description here

Oto rozmieszczone function.json:

Deployed Function.json

A tutaj wyświetlana jest aplikacja:

Deployed app settings

Te pliki json rozmieszczone są dokładnie takie same jak pliki lokalne. Ale wersja wdrożona jest błąd z powodu brakującego AzureWebJobsAzureSBConnection. Co ja robię źle?

Odpowiedz

8

Tylko zmienne środowiskowe są obsługiwane dla ustawień aplikacji i ciągów połączeń.

Trzeba się upewnić, że zmienna środowiskowa AzureWebJobsAzureSBConnection jest ustawiony na ustawieniach aplikacji czynność w portalu:

function app

a następnie raz tam, trzeba dodać zmienną AzureWebJobsAzureSBConnection z właściwego połączenia ciąg:

enter image description here

a następnie można uzyskać dostęp za pośrednictwem tego kodu przez:

Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process); 

Pozwoli to uzyskać wartość zarówno z appsettings.json lub zmiennej środowiskowej w zależności od tego, gdzie funkcja jest wykonany z (lokalny debugowanie lub wdrożony na Azure)

+1

Dzięki @flyte. Kod działał po zmianach sugerowanych przez ciebie. – Yasir

1

It is able to read the data from the Service Bus queue (configured via a variable named AzureSBConnection) But it gives me the following error when deployed in Azure:

Po wdrożeniu aplikacji do funkcji Azure, aplikacja odczyta ciąg połączenia z ustawienia środowiska. Obecnie ustawienia połączenia w appsettings.json nie aktualizują automatycznie ustawień środowiska. Moglibyśmy kliknąć przycisk [Konfiguruj ustawienia aplikacji] jako wspomniany @flyte, aby sprawdzić, czy łańcuch połączenia został poprawnie skonfigurowany. Jeśli nie, możesz dodać go ręcznie w polu ustawień aplikacji.

Note that my connection is called AzureSBConnection and not AzureWebJobsAzureSBConnection

Proszę przejść do strony [zintegrować], aby sprawdzić, czy [Połączenie Bus Service] zostanie pomyślnie skonfigurowane. Jeśli nie, możesz go zresetować, klikając link [nowy].

enter image description here

+0

Dzięki Amor - MSFT za odpowiedź. Odpowiedź @ Flyte zadziałała dla mnie. Powiedział, że nie widzę ekranu, który wyświetlasz po kliknięciu opcji Zintegruj. Zamiast tego widzę edytor do modyfikacji pliku function.json. Nagłówek odczytuje Config. – Yasir