2011-06-14 76 views
5

我建立一个.NET的Web应用程序,并使用窗体身份验证与cookies要记住,如果用户在签署或不重置IIS:身份验证的用户后,.NET

<authentication mode="Forms"> 
    <forms timeout="4320" cookieless="UseCookies" loginUrl="~/account.aspx" name="test" slidingExpiration="true" /> 
</authentication> 

但是,建设,改变后web.config或执行IIS重置,我加载的第一页显示我没有登录。但是,如果我再次刷新页面,则会显示我已登录,即使我没有做任何事情。

所以它似乎记得我登录了,但只在第一页加载后。

那是平常的吗?我在web.config中配置错了吗?这仅仅是一个本地主机问题吗?

+1

有趣的一个。你使用正常的asp.net webforms? CodeBehind中是否有IsPostBack逻辑? – christofr 2011-06-14 13:34:21

+0

服务器反弹后,cookie仍然有效是正常的。第一页不起作用并不正常。 – 2011-06-14 13:35:36

+0

你在另一台机器上试过这个吗? – Matt 2011-06-14 13:44:52

回答

4

好的,这当然是我自己的骨头缺陷。发现在我的web.config我有设置:

<appSettings configSource="appSettings.config" /> 

问题是appSettings.config在我的项目中不存在。在我删除了这一行(它来自样板代码并且不需要它)之后,它找到了。

显然在第一次加载时.net对这个文件不感兴趣,因为它第一次加载配置文件,但在第一次加载之后,它不再在意了(这就像技术性的我可以得到)。

1

问题是会话被重置。虽然你有cookie,但你需要做更多的事情。

在您的验证用户部分,确保记得我的设置被选中,即

FormsAuthentication.RedirectFromLoginPage ("TheirUserId", Persist.Checked) 

它,你需要确保是真Persist.Checked。请参阅http://msdn.microsoft.com/en-us/library/xdt4thhy.aspx以获取更多信息