I have an Azure hosted web api. I also have a simple Blazor standalone application that’s meant to call the API to get a list of categories to display. i.e. the Blazor app is meant to call the Azure web api, fetch the data and display it – should be easy enough, right ?
The web api can easily accessed via a web browser or a console app using the .NET HttpClient, but the Blazor code using the following simply kept throwing an exception with the cryptic message “TypeError: Failed to Fetch”
@inject HttpClient Http // Blazor and other code protected override async Task OnInitializedAsync() { try { _categories = await Http.GetFromJsonAsync<string[]>("categories"); } catch (Exception e) { Debug.WriteLine(e); } }
What was happening is I was actually getting a CORS error, sadly not really reported via the exception so not exactly obvious.
If you get this error interacting with your web api via Blazor then go to the Azure dashboard. I’m running my web api as a container app, type CORS into the left search bar of the resource (in my case a Container App). you should see the Settings section CORS subsection.
Add * to the Allowed Origins and click apply.
Now your Blazor app should be able to interact with the Azure web api app.