Why do you want to share Sessions between applications? ASP.NET Session is not designed to do that.
Your proposed solution of using the same ASP.NET State Server does
not work because your user will simply get 2 different session tokens,
even if they use your 2 applications concurrently from the same machine,
and same browser. You need to consider how Session works to understand
why this is.
ASP.NET session state enables you to store and retrieve values for a
user as the user navigates ASP.NET pages in a Web application. HTTP is
a stateless protocol. This means that a Web server treats each HTTP
request for a page as an independent request. The server retains no
knowledge of variable values that were used during previous requests.
ASP.NET session state identifies requests from the same browser during
a limited time window as a session, and provides a way to persist
variable values for the duration of that session.
ASP.NET Session is a metaphor for a user's current interaction with one ASP.NET application.
It exists in ASP.NET to give us a place to store temporary state data
between the various page requests that a user makes while using your
If your applications are very closely related, e.g. the user uses
both at the same time, or almost the same time, you could consider
merging them into a single ASP.NET application. You could deploy them
into different Virtual Directories to maintain some degree of logical
separation, but use only one Application in IIS.
If your applications are not that closely related, perhaps they
should be sharing the same database as a means to exchange data, or
using an API e.g. based on Web Services to exchange information.