ASP.NET 中使用哪种会话超时?
在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
NullReferenceException
。<sessionState timeout="480" />
NullReferenceException
when accessing Session["object"].由于您没有说明您使用的 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