What options are there for session handling with a modern .NET IIS Web architecture?
I understand that IIS' native session support loses sessions upon restart. Furthermore, Microsoft recommends sessions be stored in the database, which is my preferred solution.
I am attempting to architect a highly available .NET IIS platform, which scales horizontally for a third party application. The application is developed externally and while I can push for storing in a database but that will not be possible for an immediate deadline.
The third party recommends using persistent sessions, which is something I avoid. Sticky sessions will lessen availability, as when the Web server becomes unavailable it will cause accessibility issues to the clients that were previously using it. Moreover, it lessens the load balancing functionality, as a single server may receive potentially more requests than the others. IIS will still lose sessions upon restart, which is something I would prefer to eliminate. I also do not want to store the session in a cookie on the client side.
I want to enable complete high availability, while still allowing application deployment to idle servers without impact. Additionally, full load balancing. Can I enable this functionality on this technology platform without rewriting the application? What options do I have?