When the client disconnects for the first time everything works fine but when it again connects to the host, These three errors are raised -:
#Note -: Whenever I host the game I switch the scene using NetworkManager’s SceneManager to a lobby scene and when client connects to the host it also comes to lobby scene and upon disconnection the scene is switched back to the offline main menu scene. This should be happening but on second connect from the client side the connection is not made and these errors come -:
**[Netcode] NetworkPrefab hash was not found! In-Scene placed NetworkObject soft synchronization failure for Hash: 1407731671!
Failed to spawn NetworkObject for Hash 1407731671.
OverflowException: Reading past the end of the buffer**
This hash is for an object responsible for all the connections and I am Instantiating at runtime with singleton. And yes it also have NetworkObject Component.
This was at the client side.
Now the server side -:
when I stop hosting it works twice and smoothly but the third time the object which is responsible for the client server connection (ServerGameNetPortal Gameobject) gets automatically destroyed but i too have implemented singleton for it.
Please help been stuck here for almost 4 days now 
(Sorry I am not able to paste code as it keeps giving me errors )
what version of netcode are you using?
I had this issue also, my workaround was extremly annoying, I put all the Network gameobjects in a scene alone (NetworkManager, ServerGameNetPortal, ClientGameNetPortal, and more), when the player starts the game (and Press button created called “Play”) I load the scene with the Network stuff, but, right before loading the scene I check if there are already any Network stuff active in the hierarchy (I check by using their name), if there is, I delete them all, and then load the scene (additive load) with the Network gameobjects. So, when I disconnect and go back to the main menu, when the player presses the button “Play”, I delete everything and load everything again. For some reason I’m now able to disconnect and reconnect infinite amount of time and I don’t have to worry about “ServerGameNetPortal” etc been destroyed for no reason. (I think they were been destroyed because I had NetworkObject component on them but that’s besides the point.)
Also I’m not using that button “Play” for nothing, for some reason, when I was destoying/loading the scene without a button press (Uppon starting the game in the editor or uppon disconnecting and returning to the main menu), there was a new error happening, so yeah … idk. This is the flow of my game : Press start in the unity editor → press a button created called “Play” → delete any network stuff → load new network stuff → Create/Join Lobby → Disconnect → return to main Menu → if player presses “Play” → delete … etc.
Anyway, this is really annoying because I can’t have any reference between the Network gameobject and my other gameobject. I have to use GameObject.Find() to find anything I need. If you do this, keep a copy of the scene or something because something might not work for you, you never know