#azure-functions 20 articles
"No such host" for <app>.azurewebsites.net — new function apps get a unique default hostname gotchas / azure-functions New apps get a unique default hostname (-.-01); the bare name never resolves, and the deploy log's .scm. URL reveals the real host even when the app name is a masked secret "Your data stays in the region you chose" — for Azure OpenAI the deployment TYPE decides where prompts are processed, not the region gotchas / azure-functions A GlobalStandard deployment in an EU region may process prompts in any Azure region; only Data Zone (EU Data Boundary) or regional Standard keep processing in the zone or geography — write data-location claims from the… .funcignore pattern src/ also empties node_modules/*/src — the deployment succeeds, the functions don't load gotchas / azure-functions Azure/functions-action applies .funcignore with gitignore semantics to every path in the package, so src/ or test/ without a leading slash also empties those folders inside node_modules. A dependency whose entry file… Retry-After does not survive CORS — a header you send and the client reads can still arrive as null gotchas / azure-functions A cross-origin response exposes only the headers named in Access-Control-Expose-Headers plus a short safelist, so an API that sends Retry-After and a client that reads it still meet at null — both ends look right and a… A "public mode" flag that disables the token check opens every endpoint in the Function App, not just the chat gotchas / azure-functions One Function App serves a signed-in SPFx app and an anonymous website chatbot; the website instance switches off the token check, and every other HTTP function in the same app (usage stats, storage read/write, file… A brand-new Azure subscription blocks your first Function App deployment gotchas / azure-functions New subscriptions start with Y1 quota 0 and unregistered resource providers; the quota is per subscription and per region, so try a neighbouring region first — az appservice list-locations --sku Y1 lists regions you… A fixed WEBSITE_CONTENTSHARE in your template can break production on the first template redeploy after a slot swap gotchas / azure-functions On a function app with deployment slots, WEBSITE_CONTENTSHARE isn't slot-sticky: a swap moves it together with the code. A template that pins the production value (say toLower(appName)) would point production back at… A server-side origin check rejects your own smoke test — and the runbook that says "this bypasses CORS" gotchas / azure-functions Once the allowlist is enforced in the handler it applies to every caller, so the deploy script's own verification and the runbook command both need the Origin header; "this test bypasses CORS" stops being true and… Azure OpenAI — a pinned model+version in your deploy script is a time bomb gotchas / azure-functions "Deprecating" blocks NEW deployments well before retirement; resolve the newest GA version at deploy time, and match the deployment name to the model family Azure OpenAI 429 on a single request is a TPM ceiling, not a busy service — measure size, not frequency gotchas / azure-functions One request whose prompt exceeds the deployment's TPM allowance can never fit the window, so retrying is futile — a sub-second rejection means "over the ceiling", not "busy"; separate the two with a small/large request… Cache-Control on a dynamic endpoint is an edge layer you can't invalidate gotchas / azure-functions max-age on a live aggregate lets a shared cache hold the response keyed by URL; neither an app restart nor deleting the underlying data clears it, only expiry — serve dynamic data no-store, cache server-side, and have… pdf-parse and pdfjs-dist cannot share a Node process — "bad XRef entry" on classic PDFs gotchas / azure-functions Loading pdfjs-dist breaks pdf-parse's bundled pdf.js 1.10 ("bad XRef entry"), but only for classic xref-table PDFs and from the second request on — one PDF library per process; plus: load code under test with the… Per-IP rate limit counts the capability probe — corporate NAT kills the feature silently gotchas / azure-functions Corporate NAT makes per-IP per-company; metered probes silently hide the feature Retry only fast failures — a gateway error after 230 seconds is a timeout, not a hiccup gotchas / azure-functions The 502/503/504 a client rightly retries for transient failures also comes back when a request ran out of time (Azure Load Balancer returns 502 after 230 s), and retrying that multiplies the wait (3 × ~230 s) and the… Rolling out required tokens on your own API: the "calls without a token" counter measures every client, not just the app you fixed gotchas / spfx You add Entra ID token validation to an API your SPFx solutions call, ship it in soft mode and wait for "calls without a token" to reach zero — it never does, because a shared npm package, a second solution, a… The best-known public API may be the worst one — measure before you build on it gotchas / azure-functions The best-known free API returned 404/502/timeout on 7 of 8 live calls while the test suite stayed green; probe latency and status on real data, then cache successes (never failures) and honour Retry-After — a Function… The public Microsoft 365 roadmap JSON has no CORS headers — an SPFx web part can't fetch it gotchas / spfx releasecommunications/api/v1/m365 answers 200 without Access-Control-Allow-Origin; proxy it server-side Verifying CORS by header presence passes every origin — compare the value to the Origin you sent gotchas / azure-functions The header comes back for every origin (servers answer with a fallback, not an omission), so presence proves nothing; compare it to the Origin you sent, keep at least one case that expects allowed, and point the probe… Windows Functions — zip deploy onto a running app corrupts it (whole app 503) gotchas / azure-functions Live wwwroot file locks → whole app 503; re-run the deploy, prevent with WEBSITE_RUN_FROM_PACKAGE=1 Write to Azure Table Storage from a Node Azure Function — no SDK, SharedKeyLite snippets / rest Telemetry/counters from an Azure Function without @azure/data-tables bloat — Table-flavored SharedKeyLite signing, first-= connection-string parsing, 409 = fine