My azure function is returning error: Azure Functions runtime is unreachable
System.Reflection.ReflectionTypeLoadException : Unable to load one or more of the requested types.
Method 'LogFunctionStarted' in type 'WebJobs.Host.Storage.Logging.PersistentQueueLogger' from assembly 'Microsoft.Azure.WebJobs.Host.Storage, Version=4.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not have an implementation.
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.RuntimeModule.GetTypes()
at System.Reflection.Assembly.GetTypes()
at Mapster.TypeAdapterConfig.<>c.b__87_0(Assembly assembly)
at System.Linq.Enumerable.SelectArrayIterator`2.MoveNext()
at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.ToList()
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Mapster.TypeAdapterConfig.Scan(Assembly[] assemblies)
at DTSQuickHit.Functions.Startup.Configure(IFunctionsHostBuilder builder) at E:buildagentsAgent03_work37sDTSQuickHit.FunctionsStartup.cs : 32
my startup:
var environmentName = Environment.GetEnvironmentVariable("AZURE_FUNCTIONS_ENVIRONMENT");
var basePath = IsDevelopmentEnvironment(environmentName)
? environmentName
: $"{Environment.GetEnvironmentVariable("HOME")}\site\wwwroot";
var config = new ConfigurationBuilder()
.SetBasePath(basePath)
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
Microsoft.Azure.WebJobs.Host.Storage isnt even in my project files so I dont understand the problem.
My project files:
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="4.3.0" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.1.0" />
</ItemGroup>
Could you please help me out with solving this?
6
Answers
Thanks @HariKrishnaRajoli-MT for your post. Accually I checked thread you mentioned but nothing seemed to fix my issue, what I did instead: I`ve deployed clean function project to Azure which worked and it stared properly and then deployed the proper one which was failing but now it magically worked. I believe that during deployment (because I used many ways of deployment in .yaml file) some of the default might have been overwriten but im not sure)
When you get the error like
Azure Functions Runtime is unreachable
, then the main reason would be Storage Account connection issue.Please check the steps given in this thread to fix this issue.
If the above steps not helped to fix, check the below step:
local.settings.json
file is in the same place as thehost.json
file located (at the project root).Also, please refer to this GitHub issue-6239 in Azure Functions which states about setting the
AZURE_FUNCTIONS_ENVIRONMENT
instartup
class having some issues and the given temporary fix.This is tracked on Github, please follow the issue here https://github.com/MicrosoftDocs/azure-docs/issues/92820
In case any solution related to the storage account setting in the function app is not working following can be the reason.
Your function worker runtime failed to start and now because Azure does some fancy stuff in the background to redeploy resources ASAP, it somehow binds the name of your function to the worker so it’ll keep failing even if you redeploy.
The solution to this is to just scale the underlying app service plan to force the function site to start on a new worker. Once the scaling is done the worker runtime will be available again.
I hope this helps 🙂
One more scenario for the similar failure
I had the same similar issue where Azure Function app was complaining about "Azure Functions runtime is unreachable". According to documentation provided by azure nothing has really helped me. But here is the reference it might help you:
https://learn.microsoft.com/en-us/azure/azure-functions/functions-recover-storage-account
For me, there was an issue with private endpoint on storage account. If your storage account is behind the private endpoint then add outbound connection in your function app to the same vnet to which storage account’s private endpoint is part of.
That didn’t work for me as well because I already had those network configurations in place. For me issue was with function implementation and function.json where queueTrigger was using the same storage account which was used to host the functions.
I had app config variable "AzureWebJobsStorage" and is used by function app to load the functions from storage account and for that I just need to provision the private endpoint for blob sub-resources. However, as functions were calling the queue I needed the private endpoint for queue sub-resource as well.
here is terraform example to provision private endpoint for storage account with queue sub-resources.
When I got this issue, my Azure functions runtime is set to 4.x but my
Microsoft.NET.Sdk.Functions
is at3.0.13
when it should be at least4.0.0
as stated on the Microsoft documentation. I just upgraded that package to the latest version and it worked fine.