что мы знаем про сессии вообще

Как поместить идентификатор сессии в параметр GET, а не в URL?,
ASP.NET state service
Есть объект Session,

    IsCookieless = <% =Session.IsCookieless.ToString() %>
который позволяет
https://msdn.microsoft.com/en-us/library/03sekbw5.aspx
читать/записывать объекты в SessionState

Session variables are stored in a SessionStateItemCollection object that is exposed through the HttpContext.Session property.
In an ASP.NET page object, the current session variables are exposed through the Session property of the System.Web.UI.Page

A Web Forms page or
class that has access to the current request context
using the Current property in an ASP.NET application
that has session state enabled.

No exception is thrown if you attempt to get a value out of session state that does not exist. To be sure that the value you want is in session state, check first for the existence of the object
if (Session["City"] == null)
// No such value in session state; take appropriate action.

Где вообще можно что-нибудь хранить

Alternatives to session state include the following:

enableSessionState

Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive.

<configuration>       
	<system.web>
		<pages enableSessionState="true" /> 
	</system.web>
</configuration>
если этот элемент конфигурации не записать в конфиг (а какое значение по-умолчанию? The default is True.) то страницы будут выдавать ошибки-сообщения при любой работе с сессиями.

http://rsdn.ru/forum/dotnet.web/319056.hot

https://msdn.microsoft.com/en-us/library/950xf363(v=vs.100).aspx
enableSessionState="[True|False|ReadOnly]"

Optional String attribute.

Specifies session state requirements for the resources that are within the scope of the configuration file.

The enableSessionState attribute can be one of the following possible values. The default is True.

ValueDescription
FalseIndicates that session state is disabled.
ReadOnlyIndicates that session state is not writable.
TrueIndicates that session state is enabled.

session ID

When a new client begins interacting with a Web application,
a session ID is issued and associated with all the subsequent requests from the same client
while the session is valid.

Зачем сессии нужны? Для того, чтобы привязывать к сессиям процессы, например процесс ввода данных на нескольких последовательных страницах.

Почему надо привязывать процессы к сессиям, а не к клиентам (например по digital fingerprint)?
ну, digital fingerprint это более поздняя технология, и она требует javascript, который может быть выключен


Как мы узнаём - клиент новый или не новый?
раньше не было digital fingerprint, и поэтому, если сессии нет, то это значит клиент новый, а если идентификатор сессии прислал - значит старый

С чего бы и для каких целей сессии нужно становиться невалидной?
ну, есть подозрение, что можно ссылку с сессией поместить в закладки, или переслать по мессенжеру другому человеку, другой человек её откроет и получит доступ к данным первого человека, что нежелательно.
а так, предполагается, что через 20 минут сессия устареет и у злоумышленника не получится перейти по закладке

Session ID is used to maintain the server-side state that is associated with the client session across requests.

server-side state

соответствует какому-нибудь идентификатору сессии (и предполагается, что некоторому посетителю, который может иметь, а может и не иметь учётной записи в web-приложении)