in src/WebJobs.Script/Host/ScriptHost.cs [887:921]
internal static void ValidateFunction(FunctionDescriptor function, Dictionary<string, HttpTriggerAttribute> httpFunctions, IEnvironment environment)
{
var httpTrigger = function.HttpTriggerAttribute;
if (httpTrigger != null)
{
bool isProxy = function.Metadata != null && function.Metadata.IsProxy();
ValidateHttpFunction(function.Name, httpTrigger, isProxy);
if (!isProxy)
{
// prevent duplicate/conflicting routes for functions
// proxy routes check is done in the proxy dll itself and proxies do not use routePrefix so should not check conflict with functions
foreach (var pair in httpFunctions)
{
if (HttpRoutesConflict(httpTrigger, pair.Value))
{
throw new InvalidOperationException($"The route specified conflicts with the route defined by function '{pair.Key}'.");
}
}
}
if (httpFunctions.ContainsKey(function.Name))
{
throw new InvalidOperationException($"The function or proxy name '{function.Name}' must be unique within the function app.");
}
httpFunctions.Add(function.Name, httpTrigger);
}
if (environment.IsFlexConsumptionSku()
&& function.Metadata != null && function.Metadata.IsLegacyBlobTriggerFunction())
{
throw new InvalidOperationException($"The Flex Consumption SKU only supports EventGrid as the source for BlobTrigger functions. Please update function '{function.Name}' to use EventGrid. For more information see https://aka.ms/blob-trigger-eg.");
}
}