NL.Serverless.AspNetCore.AzureFunctionsHost
5.1.0
dotnet add package NL.Serverless.AspNetCore.AzureFunctionsHost --version 5.1.0
NuGet\Install-Package NL.Serverless.AspNetCore.AzureFunctionsHost -Version 5.1.0
<PackageReference Include="NL.Serverless.AspNetCore.AzureFunctionsHost" Version="5.1.0" />
paket add NL.Serverless.AspNetCore.AzureFunctionsHost --version 5.1.0
#r "nuget: NL.Serverless.AspNetCore.AzureFunctionsHost, 5.1.0"
// Install NL.Serverless.AspNetCore.AzureFunctionsHost as a Cake Addin #addin nuget:?package=NL.Serverless.AspNetCore.AzureFunctionsHost&version=5.1.0 // Install NL.Serverless.AspNetCore.AzureFunctionsHost as a Cake Tool #tool nuget:?package=NL.Serverless.AspNetCore.AzureFunctionsHost&version=5.1.0
NL.Serverless.AspNetCore
This repo provides code for hosting an AspNet Core App inside an Azure Function V3 HTTP Trigger with the new isolated worker.
Prerequisites
- Will to use the new isolated dotnet worker for functions (see the repo)
- .Net Core SDK >= 5.0.4
- Latest Azure Function Core Tools v3
npm install -g azure-functions-core-tools@3
Instructions
- Install the project template for dotnet and create a new project.
dotnet new --install NL.Serverless.AspNetCore.Template
dotnet new serverless-aspnetcore -n Your.New.ProjectName
- Happy coding your AspNet Core WebApp.
- Run the Azure Function hosting the web app
func host start -build
Deployment to Azure
Follow this instruction: https://github.com/Azure/azure-functions-dotnet-worker#create-the-azure-resources
Create an app setting within the function app.
The name of the setting should be
ASPNETCORE_TEST_CONTENTROOT_NAME_OF_YOUR_WEBAPP_ASSEMBLY
and point the value toC:\home\site\wwwroot\
Quirks
SignalR currently only works with Long Pooling. Either connect with this transport method client side or configure your Hubs to just support Long Pooling (see here).
Application Insights / Logs
In order to see the logs of the Asp.Net Core app inside the log stream of Application Insights from the functions app you need to add the following lines:
Add the package reference of
Microsoft.ApplicationInsights.AspNetCore
to the .csproj of your web app<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.17.0" />
Register the Applications Insights services in the
Statup.cs
of your web appservices.AddApplicationInsightsTelemetry();
Please note that Application Insights has it´s own logging levels configured in the appsettings.json
. You can find the documentation here.
Here is an example:
...
"Logging": {
"LogLevel": {
"Default": "Information"
},
"ApplicationInsights": {
"LogLevel": {
"Default": "Information"
}
}
},
...
If you want to use another instance of Application Insights for the web app you need to add the Instrumation Key in the appsettings.json
:
...
"ApplicationInsights": {
"InstrumentationKey": "putinstrumentationkeyhere"
},
...
Samples
Host the ASP.NET Boilerplate sample in an Azure Function
Credits
The basic idea for this is from this repo: https://github.com/NicklausBrain/serverless-core-api
Thanks <a href="https://github.com/NicklausBrain">NicklausBrain</a>.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net5.0
- Microsoft.ApplicationInsights (>= 2.18.0)
- Microsoft.AspNetCore.Mvc.Testing (>= 5.0.9)
- Microsoft.Azure.Functions.Worker (>= 1.5.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.