Azure WebJobs SDK ServiceBus connection string 

2019-04-27 07:59发布

问题:

I created an Azure Function App in Visual Studio 2015. The App has a trigger for service bus queues. The app works perfectly when I run it locally. It is able to read the data from the Service Bus queue (configured via a variable named AzureSBConnection) and log it in my database.

But it gives me the following error when deployed in 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.

Note that my connection is called AzureSBConnection and not AzureWebJobsAzureSBConnection. Also, the connection works locally. And finally, the deployed file looks exactly like the local file.

The Visual Studio structure looks like the following:

The function.json file has a bunch of settings as shown below:

Then in the Appsettings.json file, I have the following:

For deploying, I FTPed the files to the D:\home\site\wwwroot location for my Function App in Azure. The final structure in Kudu looks like:

And if I go inside my function folder:

Here is the deployed function.json:

And here is the deployed appsettings:

The deployed json files are exactly the same as the local files. But the deployed version is erroring out because of the missing AzureWebJobsAzureSBConnection. What am I doing wrong?

回答1:

Only environment variables are supported for app settings and connection strings.

You need to make sure that the environment variable AzureWebJobsAzureSBConnection is set on your Function's app settings in the portal:

and then once there, you need to add the AzureWebJobsAzureSBConnection variable with the proper connection string:

and then you can access this via code by:

Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);

This will obtain the value from either the appsettings.json or the environment variable depending on where the function is being executed from, (local debugging or deployed on Azure)



回答2:

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:

After you deployed your application to Azure Function, your application will read the connection string from environment setting. Currently, connection settings in appsettings.json will not update environment setting automatically. We could click [Configure app settings] button as @flyte mentioned to check whether the connection string is configured successfully. If not, you could add it manually in app setting box.

Note that my connection is called AzureSBConnection and not AzureWebJobsAzureSBConnection

Please go to [Integrate] page to check whether the [Service Bus connection] is configured successfully. If not, you could reset it by clicking the [new] link.