Hi,
I’ve got an Umbraco v13 site that runs fine, sitting in an Azure Windows web app, using a storage account and SQL server database, but the same code won’t run in an Azure Linux web app.
In the past, I’ve run several sites in Linux Azure web apps without a problem, but this website will only work if I remove .AddAzureBlobMediaFileSystem() and .AddAzureBlogImageSharpCache from the Startup.cs and use the local media folder (sitting inside the web/app service) instead.
When trying to use the storage account, the backoffice runs very, very slowly and I see lots of errors in the Umbraco logs stating that “the request was canceled due to the configure HttpClient.Timeout of 100 seconds elapsing.” I don’t see this error in the other Umbraco sites I run in Azure Linux web apps.
The Azure configuration looks good to me but I must have missed something. Again, this works fine if I publish it to a Windows web app but I was hoping to use Linux as I’ve done in the past.
Has anyone seen this issue before?
{
"@t": "2025-05-12T20:46:19.4869962Z",
"@mt": "Exception thrown in a background thread",
"@l": "Error",
"@x": "System.Threading.Tasks.TaskCanceledException: The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing.\n ---> System.TimeoutException: A task was canceled.\n ---> System.Threading.Tasks.TaskCanceledException: A task was canceled.\n at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)\n at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)\n at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)\n --- End of inner exception stack trace ---\n --- End of inner exception stack trace ---\n at System.Net.Http.HttpClient.HandleFailure(Exception e, Boolean telemetryStarted, HttpResponseMessage response, CancellationTokenSource cts, CancellationToken cancellationToken, CancellationTokenSource pendingRequestsCts)\n at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)\n at Umbraco.Cms.Core.Persistence.Repositories.InstallationRepository.SaveInstallLogAsync(InstallLog installLog)\n at Umbraco.Cms.Core.Services.InstallationService.LogInstall(InstallLog installLog)\n at Umbraco.Cms.Core.FireAndForgetRunner.<>c__DisplayClass4_0.<<LoggingWrapper>b__0>d.MoveNext()",
"SourceContext": "Umbraco.Cms.Core.FireAndForgetRunner",
"ProcessId": 1138,
"ProcessName": "dotnet",
"ThreadId": 11,
"ApplicationId": "6d2d325800f175b90b8b9e83cc827257b9918e14",
"MachineName": "83e8b0fc5b30",
"Log4NetLevel": "ERROR"
}