2010-07-19 32 views
0

请帮助我我在这里越来越绝望,试图找到问题,我不知道从哪里开始寻找它。在ASP.NET 3.5网站上奇怪的注销

下面是症状:

我注意到,当用户在早上登录,他随后立即注销,然后当他再次登录时,一切都很好,他可以工作网站。

Every在一段时间一次,当用户点击一个链接时,页面需要花费大量的时间来加载,但它从来没有真正的负载,并且用户被抛出到登录页面。

此外,在网站发生异常后,用户将被引导至登录页面。就好像异常会以某种方式清除会话。

您是否有任何人知道可能发生这种情况?

我在每一页我的应用程序中使用的代码如下:

If (Not User.Identity.IsAuthenticated) Then 
    Response.Redirect("../login2.aspx") 
End If 

' If session timeout then return to login screen ' 
If ((Session("LocationId") Is DBNull.Value) Or (Session("LocationId") Is Nothing)) 
Then 
    Response.Redirect("../login2.aspx") 
End If 

在web.config中的代码:

<sessionState cookieless="false" timeout="600" /> 
<authentication mode="Forms"> 
<forms timeout="600" /> 
<system.web> 
    <authorization> 
     <allow users="*"/> 
    </authorization> 
</system.web> 

回答

1

你为什么要使用该代码在每一页?

如果您正确设置了.NET授权和身份验证,通常会处理所有这些事情。

1

与此相关的情景*`

” ......之后发生了网站 异常,用户则 抛出到登录页面。这是因为如果 异常清除莫名其妙在 会议

我知道的一个可能的情况下可能发生。 它远远尤其是在生产scenaio出于多种原因进账,但我已经看到它发生:-)

如果会议是在内存中,日志记录写入是在应用程序的Bin目录中的日志文件来完成的,那么这可能是修改Web应用程序结果的bin文件夹中的应用程序重新启动即出现在内存会话中丢失。

只有一种可能的情况。如果你的会话不在内存中或你的日志记录机制不是这样,那么这不适用于你。

0

我转向所有的点网专家那里,因为我真的很绝望,

让我给这个问题的另一个症状,因为它仍然存在,

服务器是一个非常强大的服务器 - 英特尔至强与3 GB内存,所以它可能不是一个资源问题。

当用户连续使用系统时没有问题,她可以自由工作,当用户离开计算机(或应用程序)达5分钟,然后当她想要继续工作,并单击应用程序中的一个链接,将其扔到登录页面。当她试图再次登录时,她成功了,但当她点击另一个链接后,她又被抛出,然后当她登录时,她可以自由工作,一切都很顺利。

不知何故,该网站空闲时会话被清除。让我强调一下,当我在Visual Studio中运行应用程序时,仅在iis中才会发生这种情况。

的应用从asp.net 2.0转换为3.5,

就是这样,感谢

0

如果你只是用在asp.net正常的会话功能,我相信,会话超时15后-30分钟的不活动(我通常不使用会话,所以我记得它在这个范围内的某个地方)。每次向服务器回传都会重置此计时器,因此如果用户正在主动执行操作,那么他们不会在这段时间内出现。

对于需要很长时间才能加载的页面,很可能是由于工作进程的回收,并且该用户是第一个在回收后访问站点的用户,这会触发IIS执行所有编译工作,然后导致延迟的页面。这仅发生在工作人员进程回收后的第一位访问者。您可以在IIS中更改此行为以按计划发生,而不是在没有活动的情况下经过一定时间后。这会导致你的工作进程占用更多的内存,尽管这取决于你的环境,这可能不是一个好的改变。

编辑:我应该补充说,你发布的代码解释了为什么用户被踢回登录页面。它正在检查以确保会话中有某些内容,如果没有任何内容,则会将用户踢回登录页面。因此,如果他们长时间处于非活动状态,您的会话超时,则会被清除,并且用户将被代码踢回登录页面。你也应该使用FormsAuthentication.RedirectToLoginPage();为您的重定向而不是Response.Redirect。这种方式登录后,他们回到他们原来要求的页面。

+1

默认为30。附:耶稣爱你:)) – abatishchev 2010-08-05 07:04:29

+0

嗨,奇怪的是,我将会话超时设置为8小时,所以会议不应该结束,我敢打赌,一些异常会导致会话被清除,因此注销 – vobs 2010-08-07 10:04:56

0

首先,你需要拒绝非认证用户(匿名)访问:

<authorization> 
    <deny users="?" /> 
</authorization> 

你有没有配置的默认和登录页面?

<authentication mode="Forms"> 
    <forms name=".ASPXFORMSAUTH" loginUrl="Login.aspx" defaultUrl="Default.aspx" slidingExpiration="true" timeout="30" /> 
</authentication> 

name设置名字的cookie的,有用的,如果你将使用.NET 2.0内置的安全基础架构(角色,会员等)

slidingExpiration启用正常超时行为 - 用户进行任何操作复位超时