Apart from session and ViewState, all other ASP.NET solutions usually include application variables, cookies, and caches. Both ViewState and session can run and can be accessible in a server environment. ViewState is usually used on the client-side while the session, on the other hand, is used on the server-side. ViewState doesn’t expire because they are on the client-side.
The session has expiration because it is on the server-side. ViewState only holds serializable data, while the session can actually hold a large type of data. This makes the amount of data in session much larger compared to ViewState.
The session can access data to a new page or a new window while ViewState is not capable of this. Session stores data in server memory, but ViewState stores its data in browser hidden fields as encrypted data. Since the server memory holds much different kinds of data, a large amount of stored data can affect server load.