C# 在.net中重置IIS后经过身份验证的用户

C# 在.net中重置IIS后经过身份验证的用户,c#,asp.net,authentication,cookies,forms-authentication,C#,Asp.net,Authentication,Cookies,Forms Authentication,我正在构建一个.net web应用程序,并使用带有cookie的表单身份验证来记住用户是否已登录: <authentication mode="Forms"> <forms timeout="4320" cookieless="UseCookies" loginUrl="~/account.aspx" name="test" slidingExpiration="true" /> </authentication> 但是在构建、更改web.conf

我正在构建一个.net web应用程序,并使用带有cookie的表单身份验证来记住用户是否已登录:

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

但是在构建、更改web.config或执行IIS重置之后,我加载的第一个页面显示我没有登录。但如果我再次刷新页面,它会显示我已登录,即使我什么也没做

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


通常是这样吗?我是否在web.config中有错误配置的内容?这只是本地主机的问题吗?

好的,这当然是我自己的错误。事实证明,在我的web.config中,我有以下设置:

<appSettings configSource="appSettings.config" /> 

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


显然,在第一次加载时.net对这个文件不存在感到愤怒,因为它第一次尝试加载配置,但在第一次加载后,它就不再关心了(这是我能得到的最技术性的)

问题在于会话正在重置。虽然你正在吃饼干,但你还需要做一件事

在“验证用户”部分,确保选中了“记住我”设置,即

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

这是您需要确保为true的Persist.Checked。有关更多信息,请参阅。您是否使用普通的asp.net Web窗体?在CodeBehind中是否有任何IsPostBack逻辑?正常情况下,cookie在服务器跳转后仍然有效。第一页不起作用是不正常的。你在另一台机器上试过吗?