The problem is easily reproduced with a newly scaffolded Maui Blazor project. It seems like the token refresh doesn't work at all, or doesn't even occur.
Heres a link to the zipped solution: https://filetransfer.io/data-package/3xvB5DqT#link
ABP Framework version: v7.4.2
UI Type: Blazor WASM and Maui Blazor
Database System: SQL Server
Tiered (for MVC) or Auth Server Separated (for Angular): no
Exception message and full stack trace:
blazor.webview.js:1 Uncaught (in promise) Error: Volo.Abp.Http.Client.AbpRemoteCallException: Unauthorized
at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase1.<ThrowExceptionForResponseAsync>d__42[[Entrenou.Pharmacies.IPharmaciesAppService, Entrenou.Application.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\ci\Jenkins\workspace\abp-volo-release\abp\framework\src\Volo.Abp.Http.Client\Volo\Abp\Http\Client\ClientProxying\ClientProxyBase.cs:line 258 at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase
1.<RequestAsync>d__36[[Entrenou.Pharmacies.IPharmaciesAppService, Entrenou.Application.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\ci\Jenkins\workspace\abp-volo-release\abp\framework\src\Volo.Abp.Http.Client\Volo\Abp\Http\Client\ClientProxying\ClientProxyBase.cs:line 161
at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase1.<RequestAsync>d__35
1[[Entrenou.Pharmacies.IPharmaciesAppService, Entrenou.Application.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Collections.Generic.List1[[Entrenou.Pharmacies.PharmacyInMapDto, Entrenou.Application.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() in D:\ci\Jenkins\workspace\abp-volo-release\abp\framework\src\Volo.Abp.Http.Client\Volo\Abp\Http\Client\ClientProxying\ClientProxyBase.cs:line 86 at Volo.Abp.Http.Client.DynamicProxying.DynamicHttpProxyInterceptorClientProxy
1.<CallRequestAsync>d__01[[Entrenou.Pharmacies.IPharmaciesAppService, Entrenou.Application.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Collections.Generic.List
1[[Entrenou.Pharmacies.PharmacyInMapDto, Entrenou.Application.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() in D:\ci\Jenkins\workspace\abp-volo-release\abp\fram
Steps to reproduce the issue:
We noticed a difference between our Blazor and Maui Blazor versions of the app. On Blazor, when the access token is expired, the application attempts to refresh the token before sending a request to the api. Therefore, the api doesn't return an exception and everything is fine.
On the other hand, in Maui Blazor, the app doesn't seem to refresh the expired token before sending a request. Thus, the api returns an unauthorized exception and our application shows us the reload button.
We also noticed that in our Blazor project, there isn't any refresh token and the login flow seems to be triggered instead (without asking the user to reenter credentials). In Maui Blazor, we do have a refresh token. Heres a screenshot of the http requests for the blazor project:
Any chance you could be more precise? We deployed the backend on an App service on Azure.
When I use Kudu to view the content of the service, this is what we find.
We've looked in every folder and found absolutely nothing.
We connected our backend to AppInsight and the logs we get there aren't giving us that much information:
This question is about improving our ability to debug internal errors more effectively. Occasionally, we encounter 500 internal errors, and it's quite challenging to pinpoint their cause as there is no inner stack trace provided. I'm curious if there's a configuration or a particular action we need to take to consistently obtain a more detailed stack trace whenever an internal server error occurs.
Hello @liangshiwei,
Awesome, with that code at least we get the app to launch on mobile. I can handle the rest.
Thank you!
@liangshiwei any update on this?
I understand that I can show a friendlier error page, but here, I am interested in having the app work despite having no internet connection. Especially on mobile.
The chances of people having no internet access on their mobile is much higher than on a computer. On a Maui Blazor project, the app doesn't even launch. It just crashes.
It looks like if you do not have access to the internet or if the API is down, the application crashes on launch on both the Blazor and Maui Blazor projects. Is this normal? If you do not have access to the api, an exception is thrown when abp services get injected in the program.cs. This is very breaking on mobile and I think the app should be able to support offline mode.
Thank you for the code,
I also notice that there seems to be two SignalR connections. I doubt this is intended since it triggers the function ReceiveMessageAsync from the ChatHubConnectionService twice.
Is this normal?
This seems to be problematic since the chat sometimes gets Reversed twice, which cancels it out and is ordered wrongly.
Also, this means that calls to the API are made twice.
I'm having these issues both on Blazor and Maui Blazor.