Vineet
Vineet

Reputation: 401

Debugging Azure function as a C# Web Application

I have a simple trigger based Azure function which connects to an Azure event hub and writes out a message each time one is received on the event hub.

I created this as a C# Web Application based on the below post and am trying to debug this function locally:- https://blogs.msdn.microsoft.com/appserviceteam/2017/03/16/publishing-a-net-class-library-as-a-function-app/

Here is my function code:-

using Microsoft.Azure.WebJobs.Host;
using System;
using System.Threading.Tasks;

    namespace FunctionLibrary
    {
        public class EventHubProcessorFunction
        {
            public static void Run(string myEventHubMessage, TraceWriter log)
            {
                log.Info($"C# Event Hub trigger function processed a Vineet message: {myEventHubMessage}");
            }
        }
    }

Here is my function.json

{
  "disabled": false,
  "scriptFile": ".\\bin\\FunctionAsWebApp.dll",
  "entryPoint": "FunctionLibrary.EventHubProcessorFunction.Run",
  "bindings": [
    {
      "type": "eventHubTrigger",
      "name": "myEventHubMessage",
      "direction": "in",
      "path": "edpvineethub",
      "connection": "AzureWebJobsServiceBus"
    }
  ]
}

My folder structure is as below:-I have included the following files in the web application project:-

bin\FunctionAsWebApp.dll
NameOfYourFunction\function.json
AnotherFunctionIfYouHaveOne\function.json
appsettings.json
host.json

However I am getting the below error message when trying to run locally;-

No job functions found. Try making your job classes and methods public. If you'r
e using binding extensions (e.g. ServiceBus, Timers, etc.) make sure you've call
ed the registration method for the extension(s) in your startup code (e.g. confi
g.UseServiceBus(), config.UseTimers(), etc.).

Any help would be appreciated.

Upvotes: 1

Views: 508

Answers (2)

Fabio Cavalcante
Fabio Cavalcante

Reputation: 12538

Your initialization is likely failing to perform a lookup on the SB connection string, as it expects an App Setting/Environment variable name and you have the actual connection string there.

Please update your function.json to use an App Setting name, defined in your appsettings.json locally and the Function App settings when hosted, with the connection string set as its value.

Important: Since you have your connection string pasted above, I strongly recommend resetting your credentials.

Upvotes: 0

Mikhail Shilkov
Mikhail Shilkov

Reputation: 35134

Check that your folder structure looks like this:

bin\FunctionAsWebApp.dll
NameOfYourFunction\function.json
AnotherFunctionIfYouHaveOne\function.json
appsettings.json
host.json 

And function.json should of course reference the binary accordingly

"scriptFile": "..\\bin\\FunctionAsWebApp.dll"

Upvotes: 2

Related Questions