After years I finally found the solution for this Problem:
1.) The browser MUST provide the ID by himself, since http is stateless, cookies are stored not for the browser tab seperately, and therefore the asp.net session does not distinguish the single tabs as well.
2.) When opening a new tab, the JS window.name is ''. After changing the window.name to some value, it will not change anymore as long as the tab is alive and it is not changed by some code.
So the solution is: Implement some short JS code in the *.master or every *.aspx file:
if (typeof window.name != undefined) {
if (window.name == '') {
var d = new Date();
window.name = '_myWnd_' + d.getUTCHours() + d.getUTCMinutes() + d.getUTCSeconds() + d.getUTCMilliseconds();
}
var eDiv = document.getElementById('div_BrowserWindowName');
var e = eDiv.getElementsByTagName('input')[0];
e.value = window.name;
}
Also add in the form section of the *.master or every *.aspx file:
<div id="div_BrowserWindowName" style="visibility:hidden;">
<asp:HiddenField ID="hf_BrowserWindowName" runat="server" />
</div>
Now you can retrieve the window.name == UNIQUE ID by reading the hidden field after every postback, even if the user jumps from site to site and returns back after hours to the form.