如何使用共享服务器保持会话活动? ASP.NET/MVC

发布于 2025-01-06 12:50:23 字数 475 浏览 0 评论 0原文

目前,我的 Web 应用程序托管在具有以下配置 (web.config) 的共享服务器 (asphostcentral) 中:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" cookieless="UseCookies">

一段时间后,会话过期,用户将被重定向到登录页面并被迫再次输入其凭据。

我从支持部门得到的答案是:

由于这是共享服务器,建议您不要使用会话状态。 相反,请使用 cookie。编写 cookie 的方式非常非常 与session类似,只是实现方式不同。

在共享服务器上,服务器上可能还有其他站点 影响您的网站会话。

有人可以帮忙吗?您如何实施支持团队提供的解决方案?

Currently my web application is hosted in a shared server (asphostcentral) with the following configuration (web.config):

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" cookieless="UseCookies">

After some time, the session expires, the users are redirected to login page and forced to enter their credentials again.

The answer I received from support is:

As this is a shared server, you are advised not to use session state.
Instead, please use cookie. The way you program cookie is very, very
similar to session, except, the implementation is different.

On a shared server, there are other sites on the server that may
impact your site sessions.

can anyone assist on this? do you how to implement the solution provided by support team?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦在夏天 2025-01-13 12:50:23

建议您不要使用会话状态

在解决方案中使用会话状态,因此 Ctrl+F 并从代码中删除所有 Session 痕迹。如果您需要为用户存储一些信息并且此信息是敏感信息,您可以将其存储到数据库中并稍后查询,或者使用身份验证 cookie 的 userData 部分。这完全取决于您当前如何使用该会话。

you are advised not to use session state

So Ctrl+F in your solution and remove all traces of Session from your code. If you need to store some information for the user and this information is sensitive you could either store it into the database and query it later or use the userData portion of the authentication cookie. It will all depend how are you currently using the session.

狼亦尘 2025-01-13 12:50:23

使用 cookie 代替会话是危险的建议。请不要按字面意思理解。 Cookie 可以被客户端读取和伪造,并且有大小限制。

您可以:

  1. 在共享服务器上使用 ASP.NET 会话状态服务器。这样您的网络计算机就可以共享会话。
  2. 使用粘性会话
  3. 删除会话的所有使用。您可以将内容存储在数据库或 cookie 中(我不推荐!)

我按顺序推荐这三种解决方案。

Using a cookie instead of the session is dangerous advice. Please do not take it literally. Cookies can be read and forged by clients and have a size limit.

You can:

  1. Use ASP.NET session state server on a shared server. That way your web machines can share the session.
  2. Use sticky sessions
  3. Remove all usages of the session. You can either store stuff in the database or a cookie (which I do not recommend!)

I recommend, in order, these three solutions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文