An Azure service that provides an event-driven serverless compute platform.
"Failed indexing and will be disabled" is only the summary line. The Functions host logs the actual reason just before it, in a line that starts with Error indexing method. That line tells you exactly what to fix.
I reproduced this with a .NET 9 isolated app containing one healthy HTTP function and two broken timer functions. The healthy function kept working, and the host logged this for the other two:
Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.TimerFromMissingSetting'. Microsoft.Azure.WebJobs.Host: '%NightlySchedule%' does not resolve to a value.
Function 'Functions.TimerFromMissingSetting' failed indexing and will be disabled.
Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.TimerBadCron'. Microsoft.Azure.WebJobs.Extensions: The schedule expression '0 0 25 * * *' was not recognized as a valid cron expression or timespan string.
Function 'Functions.TimerBadCron' failed indexing and will be disabled.
How to find the real error
- Locally: run
func startand look for the line just before "failed indexing". - In Azure: open the Function App, go to Log stream, restart the app and watch the startup output. Or query Application Insights:
traces
| where timestamp > ago(1d)
| where message has "Error indexing method" or message has "failed indexing"
| project timestamp, message
| order by timestamp desc
The most common cause after an upgrade: a missing app setting
The first error above is easy to hit when migrating. A binding refers to an app setting with %...%, such as a timer schedule [TimerTrigger("%NightlySchedule%")] or a queue name "%QueueName%". If that setting doesn't exist where the upgraded app runs, the function can't be indexed and is disabled. Check that every setting the old app used exists:
- in the Function App's Environment variables in Azure,
- in every deployment slot you swap through, if you use slots,
- and in
local.settings.jsonwhen running locally.
Fix the setting or value named in the error, restart the app, and the function should index normally.
If the error names something else, such as a binding type or connection, include the full "Error indexing method" line in a reply here and I can take a look."Failed indexing and will be disabled" is only the summary line. The Functions host logs the actual reason just before it, in a line that starts with Error indexing method. That line tells you exactly what to fix.
I reproduced this with a .NET 9 isolated app containing one healthy HTTP function and two broken timer functions. The healthy function kept working, and the host logged this for the other two:
Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.TimerFromMissingSetting'. Microsoft.Azure.WebJobs.Host: '%NightlySchedule%' does not resolve to a value.
Function 'Functions.TimerFromMissingSetting' failed indexing and will be disabled.
Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.TimerBadCron'. Microsoft.Azure.WebJobs.Extensions: The schedule expression '0 0 25 * * *' was not recognized as a valid cron expression or timespan string.
Function 'Functions.TimerBadCron' failed indexing and will be disabled.
How to find the real error
- Locally: run
func startand look for the line just before "failed indexing". - In Azure: open the Function App, go to Log stream, restart the app and watch the startup output. Or query Application Insights:
traces
| where timestamp > ago(1d)
| where message has "Error indexing method" or message has "failed indexing"
| project timestamp, message
| order by timestamp desc
The most common cause after an upgrade: a missing app setting
The first error above is easy to hit when migrating. A binding refers to an app setting with %...%, such as a timer schedule [TimerTrigger("%NightlySchedule%")] or a queue name "%QueueName%". If that setting doesn't exist where the upgraded app runs, the function can't be indexed and is disabled. Check that every setting the old app used exists:
- in the Function App's Environment variables in Azure,
- in every deployment slot you swap through, if you use slots,
- and in
local.settings.jsonwhen running locally.
Fix the setting or value named in the error, restart the app, and the function should index normally.
If the error names something else, such as a binding type or connection, include the full "Error indexing method" line in a reply here and I can take a look.