1

当我在生产环境(IIS 7.5 + SQL Server 2008)中登录我的网络表单时,我的会话在几秒钟后(不到 1 分钟)就过期了。但是当我在我的开发环境(ASP.Net Development Server + SQL Server 2008)中做同样的事情时,会话会持续足够长的时间......(几分钟)。我将 ASP.Net 会员技术与 Forms 身份验证模式一起使用,并尝试使用 Cookies。看起来服务器上的某些东西覆盖了我的参数,但我无权访问生产 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>

非常感谢您的回答!

4

2 回答 2

1

问题来自我的共享主机提供商,我在他们的帮助论坛中联系了他们,他们的管理员在服务器端“更改”了一些东西,现在它可以工作了......他们不想告诉我他们修改了什么.

仅供参考,我的共享托管服务提供商名为 OVH.com,因此,如果您遇到会话超时问题(每 30 秒到 1 分钟到期),即使您已正确配置了 web.config(可以肯定的是,我什至将 sessionState 模式设置为="SQLServer") ,只需联系他们,他们会做必要的事情。

如果我得到解释,我会在这里发布,感谢您的阅读

于 2012-06-12T01:27:13.857 回答
1

检查您的会话超时是否也通过代码设置。

<sessionState timeout="90" />

cookieTimeout="90"

应该工作得很好。开发服务器对会话超时非常宽容。

开发服务器不代表正确的 IIS 7 环境

这提供了一种在没有 IIS 7 的情况下测试 ASP.NET 应用程序的便捷方法 - 但是,我们建议您将 Visual Studio 配置为使用 IIS 7 环境测试您的应用程序。原因如下: ASP.NET 开发服务器不支持以集成模式托管 ASP.NET 应用程序,这是 IIS 7 使用的默认操作模式。这可能会导致应用程序行为的差异。

参考这里

于 2012-06-07T06:48:31.143 回答