none
Session~会出错?丢失? RRS feed

  • 问题

  • 不知道怎么的,session出错了,就在执行一些操作时,session不知道怎么无缘无故的出错了,丢失了。

    有什么情况会引起session出错或丢失吗?

    我在iis里面访问,点击一些操作时session出错了。

    我在vs2008里面调试跟踪,session就有没有问题? 是iis引起的,还是程序上有问题?怎么解决。

    谢了!
    2009年6月9日 11:12

答案

  • 你好,
    • 开启 ASP.NET State Service。右键单击“我的电脑” -> 管理 -> 服务与应用程序 -> 服务 -> 双击“ASP.NET State Service” -> 启动(设为“自动”)
    • 更改 Web.config 打开 Web.config -> 找到 <sessionState> 节点内容,或者在system.web添加sessionState节点。

    <sessionState mode=”InProc” stateConnectionString=”tcpip=127.0.0.1:42424″ sqlConnectionString=”data source=127.0.0.1;Trusted_Connection=yes” cookieless=”false” timeout=”20″ />


    邹俊才
    • 已标记为答案 如蜗牛 2009年6月11日 2:18
    2009年6月10日 3:02
    版主
  • 检查防火墙( windows自带的有一个)是否启用了42424端口,另外可以通过
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\Port
    修改这个端口的值再试试。

    【孟子E章】
    • 已标记为答案 如蜗牛 2009年6月11日 2:18
    2009年6月10日 7:48
    版主

全部回复

  • http://tonyqus.cnblogs.com/archive/2006/04/19/378904.html http://cn.bing.com/search?q=Session+%E4%B8%A2%E5%A4%B1&form=QBLH&filt=all
    努力着就不会放弃!http://hi.baidu.com/1987raymond
    2009年6月9日 11:20
    版主
  • 你给的网站访问不了,说资源部存在了

    抱歉!给您带来麻烦了!
    您访问的资源不存在,请确认您输入的地址是否正确,如果问题持续存在,请发邮件至contact@cnblogs.com与网站管理员联系。
    2009年6月9日 11:27
  • 地址复制错了~
     
      看到了,不过感觉太深奥了,还是没整明白,没整好
    2009年6月9日 12:50
  • 你好,Session 丢失的原因有很多,你可以参考下面的地址 http://tonyqus.cnblogs.com/archive/2006/04/19/378904.html
    知识改变命运,奋斗成就人生!
    2009年6月9日 14:08
    版主
  • 你好,通俗一点,
    • 如果服务器资源紧张,系统会自动清除Session,
    • 还有Session默认是二十分钟后失效,
    太复杂的,你不好理解,就这么简单说几句,如果要解决Session经常丢失的问题,可以使用 StateServer 服务保存 Session。
    邹俊才
    2009年6月9日 15:11
    版主
  • 一般本机进常出现的session丢失是因为
    1 域名变了  原本在127.0.0.1 的站点访问了一个 localhost 的域名  导致cookie失效
    2 iis 多进程池 几个子站点 彼此不在一个进程


    紫柔版主的头像真叫萌得一个不行啊。。。。
    答案800 撒花
    2009年6月10日 1:39
  • 我现在解决了~
     
     查找程序,不知谁使用了Session.Clear()
     这个会跟iis产生冲突吗? 把Session.Clear()改掉就好了? 这是什么怪现象,难道Session.Clear()不能用?

    还有想知道的 StateServer 到底怎么配置,按照网上的资料,不知道怎么的,就是陪不好,就是报错。
    完整的web.config到底怎么弄?
    我项目里面的web.config就没有
    <sessionState
      mode="InProc"
      stateConnectionString="tcpip=127.0.0.1:42424"
      sqlConnectionString="datasource=127.0.0.1;Trusted_Connection=yes"
      cookieless="false"
      timeout="20"
    />
    在iis里面 我的网站-》右键-》属性 -》Asp.Net选项卡 -》编辑全局配置 -》状态管理里面
    我设置成了sessionState  状态服务器设置里面 连接字符串也设置了 tcpip=localhost:42424
    结果根本就没有session了~~
    不会配置,
    不知道有人可以傻瓜式的教我怎么弄吗? 傻瓜式!!!!!!!!!!!!!




    2009年6月10日 2:51
  • 你好,
    • 开启 ASP.NET State Service。右键单击“我的电脑” -> 管理 -> 服务与应用程序 -> 服务 -> 双击“ASP.NET State Service” -> 启动(设为“自动”)
    • 更改 Web.config 打开 Web.config -> 找到 <sessionState> 节点内容,或者在system.web添加sessionState节点。

    <sessionState mode=”InProc” stateConnectionString=”tcpip=127.0.0.1:42424″ sqlConnectionString=”data source=127.0.0.1;Trusted_Connection=yes” cookieless=”false” timeout=”20″ />


    邹俊才
    • 已标记为答案 如蜗牛 2009年6月11日 2:18
    2009年6月10日 3:02
    版主
  •  

     

    “/”应用程序中的服务器错误。

    无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 的值,确保服务器接受远程请求。如果服务器位于本地计算机上,并且上面提到的注册表值不存在或者设置为 0,则状态服务器连接字符串必须使用“localhost”或“127.0.0.1”作为服务器名称。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.Web.HttpException: 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 的值,确保服务器接受远程请求。如果服务器位于本地计算机上,并且上面提到的注册表值不存在或者设置为 0,则状态服务器连接字符串必须使用“localhost”或“127.0.0.1”作为服务器名称。

    源错误:

    执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

    堆栈跟踪:

    [HttpException (0x80004005): 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 的值,确保服务器接受远程请求。如果服务器位于本地计算机上,并且上面提到的注册表值不存在或者设置为 0,则状态服务器连接字符串必须使用“localhost”或“127.0.0.1”作为服务器名称。]
       System.Web.SessionState.OutOfProcSessionStateStore.MakeRequest(StateProtocolVerb verb, String id, StateProtocolExclusive exclusiveAccess, Int32 extraFlags, Int32 timeout, Int32 lockCookie, Byte[] buf, Int32 cb, Int32 networkTimeout, SessionNDMakeRequestResults& results) +1582
       System.Web.SessionState.OutOfProcSessionStateStore.CreateUninitializedItem(HttpContext context, String id, Int32 timeout) +107
       System.Web.SessionState.SessionStateModule.CreateUninitializedSessionState() +44
       System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData) +594
       System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +90
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +161
    


    版本信息: Microsoft .NET Framework 版本:2.0.50727.1433; ASP.NET 版本:2.0.50727.1433

    报错

    我在web.config里面加了
    <sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" cookieless="true" timeout="20"/>
    如果cookieless="true" 为false 直接就没有session 不报错,但是session好像失效了

    ASP.NET State Service 我开启了

    2009年6月10日 3:38
  • 注册表也查看了 值为0
    2009年6月10日 3:46
  • 你好,你的设置,和各方面操作都没有问题,请检查防火墙/杀毒软件阻止端口的可能性,注意部分防火墙/杀毒软件简单关闭不起作用。
    邹俊才
    2009年6月10日 4:42
    版主
  • 贴你的<sessionStat>配置部分
    【孟子E章】
    2009年6月10日 5:46
    版主
  • web.config

    <?xml version="1.0"?>
    <!--
        注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来
        配置应用程序的设置。
        可以使用 Visual Studio 中的“网站”->“Asp.Net 配置”选项。
        设置和注释的完整列表在    machine.config.comments 中,
       该文件通常位于
        \Windows\Microsoft.Net\Framework\v2.x\Config 中
    -->
    <configuration>
     <configSections>
      <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
       <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
         <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
         <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
         <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
         <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/></sectionGroup></sectionGroup></sectionGroup></configSections><appSettings/>

      <connectionStrings/>
      <system.web>
        <sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" cookieless="true" timeout="20"/>
        <!--
                设置 compilation debug="true" 可将调试符号
                插入已编译的页面中。
                但由于这会影响性能,因此只在开发过程中将此值
                设置为 true。
            -->
      <compilation debug="true">
       <assemblies>
        <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies></compilation>
      <!--
                通过 <authentication> 节可以配置 ASP.NET 用来
                识别进入用户的
                安全身份验证模式。
            -->
      <authentication mode="Windows"/>
      <!--
                如果在执行请求的过程中出现未处理的错误,
                则通过 <customErrors> 节可以配置相应的处理步骤。
                具体说来,
                开发人员通过该节可以配置
                要显示的 HTML 错误页以代替错误堆栈跟踪。

            <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>
            -->
      <pages>
       <controls>
        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></controls></pages>
      <httpHandlers>
       <remove verb="*" path="*.asmx"/>
       <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
       <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
       <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></httpHandlers>
      <httpModules>
       <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></httpModules></system.web>
     <system.codedom>
       <compilers>
        <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
         <providerOption name="CompilerVersion" value="v3.5"/>
         <providerOption name="WarnAsError" value="false"/></compiler>
        <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
         <providerOption name="CompilerVersion" value="v3.5"/>
         <providerOption name="OptionInfer" value="true"/>
         <providerOption name="WarnAsError" value="false"/></compiler></compilers></system.codedom>
     <system.webServer>
       <validation validateIntegratedModeConfiguration="false"/>
      <modules>
       <remove name="ScriptModule"/>
       <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></modules>
      <handlers>
       <remove name="WebServiceHandlerFactory-Integrated"/>
       <remove name="ScriptHandlerFactory"/>
       <remove name="ScriptHandlerFactoryAppServices"/>
       <remove name="ScriptResource"/>
       <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
       <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
       <add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></handlers></system.webServer>
     <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
        <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/></dependentAssembly>
       <dependentAssembly>
        <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/></dependentAssembly></assemblyBinding></runtime></configuration>

    2009年6月10日 6:47
  • 检查防火墙( windows自带的有一个)是否启用了42424端口,另外可以通过
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\Port
    修改这个端口的值再试试。

    【孟子E章】
    • 已标记为答案 如蜗牛 2009年6月11日 2:18
    2009年6月10日 7:48
    版主