(有关详情,请上下文中的问题):
是否有任何该情况
<machineKey
validationKey="AutoGenerate,IsolateApps"
decryptionKey="AutoGenerate,IsolateApps"/>
在web.config中就无法自动生成的应用程序池一个新的machineKey回收? 这是我看到的行为......
我使用在MVC应用标准的ASP.NET FormsAuthentication。 如果我在使用登录用户FormsAuthentication.GetAuthCookie
并且不使用永久性Cookie(依靠浏览器会话记住我的授权状态),我希望回收IIS应用程序池无效此cookie会话的知识......因而注销所有用户谁没有永久性Cookie。
这是否会发生在我的IIS安装(XP)中的一个,但在不同的IIS配置(服务器2K3)中FormsAuthentication饼干(在标准名称“.ASPXAUTH”)仍然有效,并继续对用户进行授权。
有谁知道为什么会这样或什么配置控制这种行为?
显然回收应用程序池拥有的浏览器是否仍然发送.ASPXAUTH的cookie无法控制(只要我还没有关闭,我的浏览器,该cookie没有过期)。
在IIS的情况下安装在循环后,妥善否认认证,我可以看到在传入的cookie Request.Cookies
期间Application_BeginRequest
事件...但一旦控制移动到Global.asax.cs中可用的下一个事件(Application_AuthenticateRequest
) ,饼干已经从删除Request.Cookies
收集 。
为什么这不会发生这两种IIS / ASP.NET配置?
如果这是不明确,形成这个问题的一个简单的方法是:
为什么HttpContext.Current.Request.Cookies[".ASPXAUTH"]
从变化{System.Web.HttpCookie}
为空时,我步骤,在单个请求中,从Application_BeginRequest
到Application_AuthenticateRequest
?
更多调试信息:
如果我下面的代码附加到Global.asax.cs中的FormsAuthentication_OnAuthenticate事件...
var cookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie != null)
{
var val = cookie.Value;
try
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(val);
}
catch (Exception)
{
}
}
...然后在我之前回收IIS应用程序池的请求,也不例外会被抓住。 回收IIS应用程序池后,当完全相同的.ASPXAUTH cookie被从浏览器发送,加密异常被捕获(“填充是无效的不能删除。”)
为什么是这样?