我知道你提到不想解析URL,但使用的URL與路由似乎是一個簡單而快速的解決方案,將參數添加到您的路線:
在您的Global.asax
routes.MapRoute(
"SessionIdUrl",
"{sessionId}/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
創建一個基本控制器,使會話ID提供給您的控制器:
public class BaseController : Controller
{
public string UrlSessionId { get; set; }
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
object sessionId = "";
if (filterContext.RouteData.Values.TryGetValue("sessionId", out sessionId))
{
UrlSessionId = sessionId.ToString();
}
}
}
在您的控制器從這個基本控制器繼承:
public class HomeController : BaseController
所以你的控制器可以訪問base.UrlSessionId。
當用戶登錄時,開始在您的Url中使用sessionId;
[HttpPost]
public ActionResult SignIn(User data)
{
// authenticate
return RedirectToAction("AfterSignedIn", new { sessionId = Session.SessionID, id = "my id" });
}
在您的意見,創建你的鏈接與SessionID的是這樣的:
@Html.ActionLink("My link", "ActionWithUrlSession", "YourController", new { sessionId = Session.SessionID, id = "my id" }, null)
在這裏你去,你可以實際使用別的比Session.SessionID,你很可能會成爲提供更好的可能會識別用戶當前所使用的內容。
這對會話處理有什麼幫助? – Alxandr