I wanted to something simple, so I change what I used to have with much simpler layout and content. Unfortunately, this process totally brought me the memory when using AngularJs 2.0.
Since Blazor is still experimental, even though it has claimed it’s production ready. There are so many content on Internet are for the older version.
I hope in the future, we can have a machine somewhere will automatically flag a content with outdated tag, so people don’t have to read them. For example, I put a comment in this answer on StackOverflow.
More thoughts about Blazor, somehow I don’t feel it’s really production ready, because of this problem. It’s a such an annoying problem. I can understand why it is happening. Blazor server-hosted pushes the content, such changes in DOM, from server to the client through SignalR, which requires a connection established between the client (WebAssembly) and the server. However, the connection can be lost any time for any reason. When it happens, Blazor provides a very confusing message.
As a user, I don’t need to know any of those, and I may not even understand why I have to refresh to make it work (to re-establish the connection). I just need the website to display content when I click a link. You can see there are some discussions in Github: this, and that. Developers do not like the current design.
The heck I applied works mostly, unfortunately, it could result in 503: Server Unavailable. That is because the server application closes the connection. I have to refresh the client to wake up the server again. Still very annoying behavior.
I think the challenge is, Blazor does not know when to refresh automatically. I think the compiler needs to be smart enough to understand what part of the code will require automatically refresh the connection, and every time the client requests a new location, the server should automatically create a new connection if the old one has been closed.