我需要为每个浏览器窗口/选项卡设置一个新会话。我知道ASP.NET为每个进程分配一个会话。我也知道浏览器在应用程序的所有打开的选项卡/窗口之间共享此会话。但是,我需要想出一种方法来为新的选项卡/窗口创建一个新会话。
无Cookie会话状态也不是一个选项。我已经看过了。我希望保持URL的清洁。
我查看了以下解决方案。 1)asp.net - session - multiple browser tabs - different sessions?。此解决方案建议使用IsPostBack属性,该属性在MVC中不可用。 2)https://sites.google.com/site/sarittechworld/track-client-windows。这个看起来非常复杂,我不完全理解它中发生的javascript魔法。我不想提出一个我不理解的解决方案。此外,我并不完全了解此解决方案可能产生的任何安全漏洞。
有人能指出我正确的方向吗?
答案 0 :(得分:1)
我创建了一个名为ASP.NET MVC会话会话的NuGet包。您可以在此处找到更多信息:http://blog.micic.ch/net/asp-net-mvc-conversational-session
我昨天发布了第一个版本。查看演示代码或下载演示解决方案,如果有需要改进的地方,请告诉我。 :)
编辑:默认情况下:当您在视图中使用适当的扩展方法时,“标识符”将通过URL传递。但您可以自己添加标识符。它为您提供更多灵活性。 (例如,如果您的链接不是通过@ Html.ActionLink等生成的。)
答案 1 :(得分:0)
实现此目的的唯一方法是在URL中附加会话ID,这是无Cookie会话要执行的操作。不幸的是,由于它产生的丑陋的网址,你似乎已经排除了这种可能性。