Это поведение клиента, которые вы не можете контролировать.
Однако, у меня было довольно простое решение проблемы.
Давайте предположим, что следующий URL: http://my.website.com/my_url.aspx
Затем в Page_Load вы можете установить сеанс, но если сеанс уже существует, то вы закрыть вкладку, перейти на другую страницу или что-то другое.
protected void Page_Load(object sender, EventArgs e)
{
if (Session["PageOpened"] != null)
{
// The page is already opened in another tab.
}
else { Session["PageOpened"] = true; }
}
Не забудьте очистить сеанс, когда вы переходите на любую другую страницу.
Предоставление программного стека и/или архитектуры программного обеспечения высокого уровня помешало бы мне проголосовать. C# много чего. – Ligemer