@Html.ActionLink
создаст ссылку. Щелчок по нему приведет к запросу HttpGet на сервер. Это нормально для всего, что не меняет состояние, потому что действия HttpGet должны быть идемпотентными - вызов его несколько раз дает тот же эффект.
Для выхода из системы я думаю, что лучшие практики и стандарты рекомендуют используйте HttpPost, который вы можете реализовать с помощью сообщения скрытой формы:
<a href="javascript:$('#form-logout').submit();">
Logout
</a>
@using(Html.BeginForm("logout", "account", new { area = "" }, FormMethod.Post,
new { @id = "form-logout", @class = "d-none" }))
{
@Html.AntiforgeryToken();
}
Щелчок по ссылке вызовет отправку скрытой формы, которая отправит обратно метод выхода, определенный в контроллере, с именем AccountController
, для например:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Logout()
{
Session.Abandon();
Response.Cookies.Clear();
return RedirectToAction("index", "dashboard", new { area = "" });
}