我的系统设置了authentication的mod为Forms,首先从login.aspx登录,用户名记入Session["UserName"],然后调用FormsAuthentication.RedirectFromLoginPage( strUserName, true);后重定向到index.aspx,index页嵌入了一个iframe,现在情况是我自己的开发机器上一切正常,但一部署到其他机器上后,一进入index页就检测到Session["UserName"]==null,FormsAuthentication也丢失凭据了,在加载index时是有的,但是在加载iframe对应页就丢失了,我参考了微软的说法将web.config文件从病毒监控排除了,将iis的目录安全性也设置成了允许匿名访问,cookie也允许了,甚至将SessionState换成StateServer或SqlServer都搞不定,请高手救急,谢谢

解决方案 »

  1.   

    在web.config中设置一下过期时间
    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="120"/>
      

  2.   

    C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\machine.config<processModel 
    userName="system"  //把这里改成这样试试 :userName="machine"
    />
      

  3.   

    只要两种可能1.cookie被禁用(请再次确认否为被动态修改Cookie),2.电脑中有病毒
      

  4.   

    1、我在ie里面隐私部分把cookie设置成了自动覆盖处理啊
    2、machine.config默认就是Username=machine啊
    3、电脑病毒监控、防火墙都装了啊
    4、过期时间默认是30分钟还不够啊,而且是一登入就过期了
    5、确定登入了,否则index页面都进不去啊,我还把用户名打出来了的所以我才觉得太奇怪了:(
      

  5.   

    那就不用Session,换成cookies正确!
      

  6.   

    微软的说法说过那些可能造成原因是iframe使用的时候才发生的吗?如果你在index.aspx没有发现,那么你说的“微软的说法”是有点有病乱投医了。你的问题描述的有点太玄了,不知道你有多少隐含的系统环境没有描述,不知道如何测试。你自己把问题想得简单一些,原始一些,多提供一些测试结果。例如专门搞测试的人可能会懂得在测试用例中考虑ie6与ie7的不同。
      

  7.   

    FormsAuthentication用了这个干嘛还要用SESSION????
    要么用SESSION要么用FormsAuthentication
      

  8.   

    不管是用Session还是用FormsAuthentication都会出现一进去就凭据失效或者是Session丢失啊,因为我程序用了iframe,所以按微软的说法设置了P3P头也不行,然后trace了一下发现出现了某个异常
    异常类型:System.Threading.ThreadAbortException
    异常应用程序:mscorlib
    异常信息:Thread was being aborted.
    进程一终止Session就丢失了
      

  9.   

    建议用数据库保存session要不就直接使用cookie尽量少使用session
      

  10.   

    是不是客户端的时间和服务端的时间不同步?
    如果客户端的时间比服务端的时间慢的话,Cookie当然会过期!
      

  11.   

    我尝试了ServerState、SqlServer来管理Session还是一样的,或者不管Session了,直接用FormsAuthentication来验证也是同样的问题,一进去后FormsAuthentication就检测到凭据过期又重定向到登录页了,我还将代码里面的Response.Redirect的第二个参数设置为false了也一样。
      

  12.   

    是不是客户端的时间和服务端的时间不同步?
    如果客户端的时间比服务端的时间慢的话,Cookie当然会过期!还有,Session也是用Cookie来维护的!
      

  13.   

    考虑程序运行时间过程或者出错,导致IIS重启,丢失Session
      

  14.   

    或者发生致命的错误早期NHibernate就会出现类似的情况
      

  15.   

    Cookie有没有被禁用?看了你的描述好像是Cookie的问题!多查查。
      

  16.   

    看看Session有没有真正的赋到值.
    一般不会出现Session为空的情况
    timeout加长一点
      

  17.   

    如果以上都排除了。可以将iis中应用程序池中web园数目设置为1
      

  18.   

    首先感谢各位的回答,但是还是没有搞定,奇怪的是在我自己机器上什么都没有设置就是好好的,其中一台我把http头加上了p3p隐私协议了就好了(因为我用了框架iframe),而其他两条机器我试了包括p3p协议、修改machine.config、修改ie的隐私关于cookie的设置、修改了SessionState的三种模式、病毒监控排除等方法,还是登入时记下了session,但是框架一装载session就丢失了(或者是FormsAuthentication凭据丢失),真是郁闷:(
      

  19.   

    对了,我试了一下用cookie,发现也是一样,框架页面一加载,cookie存的值也没有了,程序也没有发现有什么异常抛出