ASP.NET 中使用哪种会话超时?

发布于 2024-12-17 19:44:50 字数 286 浏览 0 评论 0原文

在 ASP.NET 中,您可以在多个位置设置会话超时:

web.config:

<authentication mode="Forms">
    <forms loginUrl="Login" defaultUrl="Index" timeout="480"/>
</authentication>

<sessionState timeout="480"  />

在 IIS 中。

何时使用哪个会话超时?

In ASP.NET you can set the session timeout in several places:

web.config:

<authentication mode="Forms">
    <forms loginUrl="Login" defaultUrl="Index" timeout="480"/>
</authentication>

<sessionState timeout="480"  />

And in IIS.

When is which session timeout used?

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

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

发布评论

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

评论(2

奶气 2024-12-24 19:44:50
 <forms loginUrl="Login" defaultUrl="Index" timeout="480"/>
  • 是身份验证 cookie 的超时时间,这意味着登录后您有 480 分钟的时间,直到您再次重定向到登录页面(如果您使用滑动过期,它会发生一些变化)。

  • 是 Session 对象的超时时间,因此,如果您在 Session["object"] 中存储了某些内容,则在 480 分钟不活动后,它将变得不可用。
  • 如果会话超时小于登录超时,则在访问 Session["object"] 时可能会收到 NullReferenceException
 <forms loginUrl="Login" defaultUrl="Index" timeout="480"/>
  • is the timeout for the authentication cookie, this means that after login you have 480 minutes till you get redirected to the login page again (if you use sliding expiration it changes a bit).

<sessionState timeout="480" />

  • is the timeout for the Session object, so if you have something stored into Session["object"], this will become unavailable after 480 minutes of inactivity.
  • if the session timeout is smaller than the login timeout, you could get a NullReferenceException when accessing Session["object"].
日裸衫吸 2024-12-24 19:44:50

由于您没有说明您使用的 IIS 版本,但假设这是 IIS7 或更高版本。

本质上,如果您在配置中定义了显式值,则将使用该值。在 IIS 7 或更高版本中,通过 IIS 控制台设置此值也会更新您的配置文件,在 IIS 6 中它使用配置数据库。

在您自己的网站配置文件中显式设置该值将始终覆盖 IIS 中设置的值,除非已在 applicationHost.config 中的功能上禁用委派,如果您在本地设置该值,则会引发错误。

您可以通过创建一个空的 ASP.NET 网站并部署到 IIS 来测试这一点。您将看到其配置文件中没有会话超时设置,因此您将使用服务器设置。将会话超时更新为 IIS 中默认值以外的值,您现在将看到特定部分已添加到您的 web.config 文件中,因此现在该值已成为使用的值。

有关 IIS7+ 中的设置和配置管理的详细信息,请此处

As you haven't stated what version of IIS you're using but assuming this is IIS7 or above.

Essentially if you define an explicit value in your config this is what will be used. In IIS 7 or above setting this value through the IIS console will also update your config file, in IIS 6 it uses the metabase.

Setting the value explictly in your own websites config file will always override that set in IIS unless delegation has been disabled on the feature within applicationHost.config which will throw an error if you set it locally.

You can test this by creating an empty ASP.NET website and deploy to IIS. You'll see there is no setting for session timeout in it's config file so you'll be using the server setting. Update the session timeout to a value other than the default in IIS and you'll now see a the specific section has been added to your web.config file so this now the used value.

More info on settings and config management in IIS7+ here

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