当我在生产环境 (IIS 7.5 + SQL Server 2008) 中登录到我的 Web 窗体时,我的会话在几秒钟(不到 1 分钟)后过期。但是当我在我的开发环境(ASP.Net 开发服务器 + SQL Server 2008)中执行相同的操作时,会话会持续足够长的时间......(几分钟)。我将 ASP.Net 成员资格技术与表单身份验证模式结合使用,并尝试使用 Cookie。看起来服务器上的某些内容覆盖了我的参数,但我无权访问生产 IIS 配置(我订阅了共享主机)
这是我的 web.config 参数:
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
<authentication mode="Forms">
<forms loginUrl="~/Pages/Front/Login.aspx"
protection="All"
timeout="900"
path="/"
requireSSL="false"
slidingExpiration="true"
defaultUrl="~/Pages/Front"
cookieless="UseCookies"
name="MySite" />
</authentication>
<membership defaultProvider="AspNetSqlMembershipProvider">
<providers>
<clear />
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="XXX"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="5"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""/>
</providers>
</membership>
<roleManager enabled="true"
cookieName="booble.com"
cookieProtection="All"
cookieSlidingExpiration="true"
cookieTimeout="90"
createPersistentCookie="true"
cookieRequireSSL="false">
<providers>
<clear />
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="XXX" applicationName="/" />
<!--<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />-->
</providers>
</roleManager>
<sessionState timeout="90" />
<customErrors defaultRedirect="Error.aspx" mode="On" redirectMode="ResponseRewrite" >
<error statusCode="404" redirect="Error404.aspx"/>
</customErrors>
<!-- needed because of my Provider-->
<pages enableViewStateMac="false" />
<siteMap enabled="true" defaultProvider="AspNetXmlSiteMapProvider">
<providers>
<clear />
<add siteMapFile="Web.sitemap" name="AspNetXmlSiteMapProvider"
type="System.Web.XmlSiteMapProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
securityTrimmingEnabled="true" />
</providers>
</siteMap>
</system.web>
提前非常感谢您的回答!
问题来自我的共享主机提供商,我在他们的帮助论坛中与他们联系,他们的管理员在服务器端"更改"了一些东西,现在它可以工作了......他们不想告诉我他们修改了什么。
仅供参考,我的共享主机提供商名为 OVH.com,因此,如果您遇到会话超时问题(每 30 秒到 1 分钟过期一次),即使您已正确配置了 web.config(可以肯定的是,我什至将我的 sessionState 模式="SQLServer"),只需联系他们,他们将做必要的事情。
如果我得到解释,我会在这里发布,感谢您的阅读
检查您的会话超时是否也通过代码设置。
<sessionState timeout="90" />
和
cookieTimeout="90"
应该工作正常。开发服务器对会话超时非常宽容。
开发服务器不代表正确的 IIS 7 环境
这提供了一种测试 ASP.NET 应用程序的便捷方法 如果没有 IIS 7 - 但是,我们建议您配置 Visual Studio 使用 IIS 7 环境测试您的应用程序。 原因是:ASP.NET 开发服务器没有 支持在集成模式下托管 ASP.NET 应用程序,即 IIS 7 使用的默认操作模式。这可能会引入 应用程序行为的差异。
参考这里