积极答复者
请问如何能让用户经过验证后,一直保持和服务器的连接状态?

问题
-
开发环境:
windows server 2008 standard SP2
VS 2010 SP1
ASP.NET 4 WebFormsweb.config 配置:
<authentication mode="Forms">
<forms cookieless="AutoDetect" loginUrl="~/Login.aspx" name="loginForm" path="/" protection="All" slidingExpiration="false" timeout="20">
<credentials passwordFormat="SHA1"></credentials>
</forms>
</authentication><authorization>
<deny users="?" />
</authorization><sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false" timeout="50" />现在采用的方法:
用户通过窗体验证登录后,用 ASP.NET AJAX 不停地循环调用 Web 服务。问题:
过一段时间以后,用户就离线,调用 Web 服务返回 “身份验证失败” 错误,用户必需要重新登录。请问如何能让用户经过验证后,一直保持和服务器的连接状态?
- 已编辑 学无Z境 2012年12月11日 11:35
答案
-
- 已建议为答案 Willin Wang 2012年12月12日 6:42
- 已标记为答案 Song TianModerator 2012年12月18日 8:43
- 取消答案标记 学无Z境 2013年1月10日 1:32
- 已标记为答案 学无Z境 2013年1月10日 3:05
全部回复
-
- 已建议为答案 Willin Wang 2012年12月12日 6:42
- 已标记为答案 Song TianModerator 2012年12月18日 8:43
- 取消答案标记 学无Z境 2013年1月10日 1:32
- 已标记为答案 学无Z境 2013年1月10日 3:05
-
我现在把代码改现在这个样子, 还是不能一直保持连接。
Loagin.aspx -> Default.aspx
Default.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Oasis.Admin.Views.Default.Default" %><%@ OutputCache Location="None" VaryByParam="None" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="False">
<Scripts>
<asp:ScriptReference Path="~/Views/Default/Default.js" />
</Scripts>
</asp:ScriptManager>
<iframe>固定 Default.aspx, 所有的网页在此 iframe 里导航</iframe>
<script type="text/javascript">
function intervalRequest() {
$.ajax({
url: "IntervalRequest.aspx", // IntervalRequest.aspx 是和 Default.aspx 在同一个目录里的网页
type: "GET",
dataType: "text",
contentType: "text/html; charset=utf-8",
cache: false,
success: function (data) {
},
error: function (jqXHR) {
alert(jaXHR.responseText);
}
})
};intervalRequest();
window.setInterval(intervalRequest, 3000);
</script>
</form>
</body>
</html>
web.config 配置:
<authentication mode="Forms">
<forms cookieless="AutoDetect" loginUrl="~/Login.aspx" name="loginForm" path="/" protection="All" slidingExpiration="false" timeout="20">
<credentials passwordFormat="SHA1"></credentials>
</forms>
< /authentication>
只要 timeout 时间一到,就失去与服务器的连接
请问我这个方法哪里有问题?- 已标记为答案 学无Z境 2013年1月10日 3:05
- 取消答案标记 chenrensongModerator 2013年1月10日 3:34
-
现在改成了这样,还是不行。
<script type="text/javascript">
function intervalRequest() {
$.ajax({
url: "IntervalRequest.aspx",
type: "GET",
dataType: "text",
contentType: "text/html; charset=utf-8",
cache: false,
success: function (data) {
},
error: function (jqXHR) {
alert(jaXHR.responseText);
},
complete: function () {
window.setTimeout(intervalRequest, 10000);
}
})
};intervalRequest();
</script>
- 已编辑 学无Z境 2013年1月10日 2:50
- 已标记为答案 学无Z境 2013年1月10日 3:06
- 取消答案标记 chenrensongModerator 2013年1月10日 3:34