我有一个ASP.NET Web应用程序,无论出于何种原因,当它部署在任何IIS服务器上时,其行为类似于页面缓存和,它根本不会回发到服务器。
例如,导航到登录页面,输入凭据,单击登录按钮,然后返回到您登录页面,并清除表单字段。信息未提交回服务器。回发没有执行。浏览器似乎只是从缓存中恢复原始页面。
我发现这个article表示我需要在ASP.NET会话状态中放置一些东西,以使会话保持有效。
当用户连接到ASP.NET时 应用程序,一个唯一的会话ID将 与用户有关联。如果 然而,会议中没有任何内容, 没有cookie将被发送到浏览器。 这意味着用户将得到一个 新会话ID下次新建一个URL 已打开或页面已刷新。如果 什么东西放在会议上 (HttpContext.Current.Session [“你好] = “你好”但是,ASP.NET会发布一个 cookie名为ASP.NET_SessionId。这个 cookie包含用户的会话ID 并且cookie将在最后到期 会议(当你关闭你的 浏览器)。
我将尝试该文章推荐的内容,因为我没有在会话中存储任何内容。
我还在页面中添加了过期标头:
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1))
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.Cache.SetNoStore()
并在html中添加一些元标记:
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
关于这种行为的原因可能是什么?
答案 0 :(得分:2)
该问题与IIS有关。
Web应用程序的Directory Security
设置为在匿名访问下运行 ,其中包含专为应用程序创建的本地用户帐户和应用程序池。
事实证明,Integrated Windows Authentication
和 Enable anonymous access
必须两者,否则你会得到这种奇怪的行为。
FWIW,ASP.NET Web应用程序在经典ASP站点下的FRAMESET / FRAME中运行,只有在从本地网络访问站点时才会出现此问题。它外部工作得很好。它在第一次访问时也在本地网络上工作,然后需要清除会话cookie以使其再次工作。
答案 1 :(得分:0)
这听起来不像会话状态问题。这听起来像你的Sub Page_Load
有问题答案 2 :(得分:0)
这只是登录页面发生的事吗?如果您在多个IIS服务器上尝试过此操作,那么您的页面中的某些内容似乎已关闭。 IIS的标准安装和带按钮的简单ASPX页面将导致回发而无需执行任何操作。如果您没有看到,那么它必须是该页面上的内容。尝试使用标签和按钮创建一个非常简单的页面,并验证您是否可以看到帖子,并且page_load(如RichO所说)正常工作。
答案 3 :(得分:0)
您使用的是哪种服务器配置?这是一个很长的镜头,但是会话是特定于服务器的:如果你有多个Web服务器,后续页面加载可能会(正确)表现,好像会话从未设置过一样。
确保您的浏览器启用了Cookie。会话存储需要cookie。
如果您的开发箱出现这种情况,请在page_load中设置断点(假设您没有使用MVC)或POST控制器操作,以查看服务器端实际发生的情况。
另外,尝试通过HTTP嗅探器(如Fiddler)点击这一点,看看网络上发生了什么。