asp.net - 如何停止 ASP.net 表单例份验证/ session 在 setInterval ajax Web 服务调用中更新?

标签 asp.net javascript web-services forms-authentication session-timeout

我有一个我编写的控件,它有一个 javascript 组件和一个 Web 服务组件。我遇到的问题是 javascript 设置为:

setInterval(this._checkAlertsHandler, this._messageCheckInterval * 1000);

这会调用一个函数,该函数会像这样进行网络服务调用:

Alert.SiteAlertService.GetAlerts(this._receivedAlertsHandler, this._errorReceivedAlertsHandler);

所以这是使用网络服务javascript代理方法来访问网络服务。问题在于我们的应用程序具有表单例份验证和超时值,因此如果用户闲置时间过长,系统会将其注销。

我的 web 服务调用显然将包含 session 和表单例份验证 key 的 cookie 发送到 web 服务。然后,asp.net web 服务会自动更新 session 和表单例份验证。每次 javascript 访问 Web 服务时,它基本上都能让用户保持活力。我不想要这种行为,这应该只是规避它,这样即使这个 js 正在访问 web 服务来检查新消息,如果用户没有在我们的应用程序上进行回发(并且实际上是空闲的)它会仍然注销它们。这不会发生:(

我希望发生的是这种对 Web 服务的间隔调用不会更新任何身份验证( session 更新我可以通过使用具有用户 session ID 的字典键/值的应用程序级变量来解决,所以我不必须使用任何 session 级变量)。

我该怎么做/更改我的网络服务/或控件以按照我想要的方式工作?

最佳答案

我也在研究不同的方法。我这样做的一种方法是将其添加到 Ajax 服务端点:

// Hide the cookie so this call doesn't extend the user's ticket
HttpContext ctx = HttpContext.Current;
ctx.Response.Cookies.Remove(FormsAuthentication.FormsCookieName);

这样您就可以取消 Auth Ticket 更新,因为更新后的 cookie 永远不会返回给客户端。

如果您有多个要排除的 Ajax 端点,可以实现一个模块来识别这些端点并包含代码以从响应中删除 cookie。

关于asp.net - 如何停止 ASP.net 表单例份验证/ session 在 setInterval ajax Web 服务调用中更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3102563/

相关文章:

c# - Razor 显示属性名称而不是值

c# - 在 .NET 中实现线程对话(如 Facebook Wall)的最佳方式是什么?

javascript - 阅读开始 asp.net 4 的书后学习 asp.net 的下一步

javascript - 按下提交按钮后淡化 <div> 元素

ios - 将curl命令翻译成NSMutableUrlRequest

javascript - 使用 JavaScript 从 SOAP 响应中保存 xlsx 文档

c# - 如何获取 Entity Framework 中的特定列

javascript - HTML5 Javascript 移动应用不适合较小分辨率的平板电脑

javascript - 卸载后将光标更改回自动

.net - 您能否在不弄乱您的 app.config 的情况下设置 WCF 服务引用?