IIS如何识别.NET中的不同会话?

Bal*_*ala 9 asp.net iis

假设我已登录到从IIS运行的应用程序.现在我还没有退出,但关闭了浏览器.当我再次访问应用程序时,它默认为登录页面.IIS如何识别它是一个新请求并将用户重定向到登录页面?

我有另一个问题.假设我没有关闭我登录时使用的浏览器.我打开新浏览器以请求来自同一应用程序的页面.IIS识别出它是对应用程序的新请求,并将用户重定向到登录页面.为什么它不使用第一个浏览器使用的现有会话或cookie?

请不要因为我的连续问题而烦恼......我有很大的困惑.我们说HTTP是无状态协议.一旦页面被请求我已登录.并且IIS和浏览器之间的HTTP协议连接将被终止,对吧?然后我导航到该登录应用程序中的其他页面.现在IIS识别用户已登录此浏览器.但是,当我打开一个新的浏览器并请求该应用程序时,IIS如何识别它是一个新的请求?由于HTTP协议已断开连接,它在第一种情况下如何工作?

cHa*_*Hao 38

正如您所说,HTTP本身是无状态的,并且每个请求在技术上都是彼此独立的.网站使用的会话是一种解决方法.通常情况下,服务器会存储它在请求之间维护的任何信息(例如登录用户的用户名和/或ID),并为该信息分配一个ID(称为"会话ID").然后它会告诉浏览器会话ID,这样浏览器可以在需要时再发回ID.如果浏览器发挥其作用并提供会话ID,则可以随每个请求检索,更新等存储的信息,甚至在无状态协议上提供某种程度的状态.

会话通常使用cookie实现.也就是说,服务器向浏览器提供带有会话ID的cookie,并且浏览器在每次请求时都会回复相同的cookie,直到cookie过期或被遗忘为止.某些cookie(所谓的"会话cookie")不会被保存,并且在浏览器关闭时会被遗忘.新打开的浏览器没有任何会话cookie可以通过,所以如果服务器使用会话cookie来进行会话(它应该),它会认为用户尚未登录并在需要时将它们退回到登录页面登录

会话cookie通常在同一浏览器的选项卡之间共享,有时甚至可以由已经运行的浏览器中的"文件>新窗口"打开的窗口共享,因为这两种情况通常只是该浏览器的一部分.但是,如果您从"开始"菜单启动浏览器,或者您的操作系统允许您启动程序,那么这是一个完整的其他过程 - 并且会话cookie很少在进程之间共享.

在使用会话的每个请求之后,服务器通常也只在有限的时间内(几秒到几年,根据服务器和/或站点设置)记住其末端的会话.如果浏览器传递的cookie与服务器不再记忆的会话相对应,那么就好像根本没有会话一样.在您必须登录的情况下,将再次跳转到登录页面.