我搜索了许多网站,包括 Stackoverflow ,关于在MVC中使用会话超时,但是所有网站和代码只显示了WebConfig中使用的部分代码,但它并没有显示需要填充webconfig的位置
我开发了一个应用程序,现在我想在5分钟后添加会话超时,如果应用程序处于空闲状态,许多人已声明使用客户端和服务器端,我有点困惑在哪里使用它。 我从stackoverflow中找到了可以在WebConfig中使用的代码
<system.web>
<sessionState timeout="30"></sessionState>
</system.web>
我的问题是哪个webconfig以及在哪里添加? 因为在MVC中我有两个webconfig文件一个在View中,另一个在主项目中,我尝试在webconfig中应用,就在&#34;配置&#34;旁边像这样
<configuration>
<system.web>
<sessionState timeout="30"></sessionState>
</system.web>
</configuration>
它会生成错误消息,所以请告诉我如何使用Session timed out for this application
已更新
感谢您的所有回复,我已经应用了下面的所有代码,并附上了错误消息的屏幕截图,请检查并让我知道我做错了什么 1)如果我使用以下代码,即
<system.web>
<sessionState mode="InProc" cookieless="false" timeout="30"></sessionState>
</system.web>
在主网络配置下的然后获取如下图所示的错误消息
2)如果我在视图下的webconfig上使用相同的代码,我会得到此错误图片
以及我附加两个webconfig文件的图像文件
- &GT;
- &GT;
希望我分享了更多信息,问我是否错过了什么
UPDATE2
主网页
<configuration>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="rptBuildProvider" type="CrystalDecisions.Shared.RptBuildProviderHandler, CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, Custom=null" />
<section name="crystalReportViewer" type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
<businessObjects>
<crystalReports>
<rptBuildProvider>
<add embedRptInResource="true" />
</rptBuildProvider>
<crystalReportViewer>
<add key="ResourceUri" value="../crystalreportviewers13" />
</crystalReportViewer>
</crystalReports>
</businessObjects>
<add name="webPortalConnectionString" connectionString="Data Source=mysys-021\SQLEXPRESS;Initial Catalog=LIS_MHL_LIVE;User ID=sa;Password=cspl#" providerName="System.Data.SqlClient"/>
<add name="LISConnectionString" connectionString="User ID=sa;Password=cspl#; Data Source=mysys-021\SQLEXPRESS;INITIAL CATALOG=LIS_MHL_LIVE;Persist Security Info=True" providerName="System.Data.SqlClient" />
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.ReportAppServer.Controllers, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.ReportAppServer.DataDefModel, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
<add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/></assemblies>
</compilation>
<httpRuntime targetFramework="4.5"/>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880"/>
</authentication>
<pages>
<namespaces>
<add namespace="System.Web.Helpers"/>
<add namespace="System.Web.Mvc"/>
<add namespace="Kendo.Mvc.UI"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing"/>
<add namespace="System.Web.WebPages"/>
</namespaces>
</pages>
答案 0 :(得分:1)
您只需在主web.config中添加: -
<configuration>
...
<system.web>
<sessionState mode="InProc" timeout="30" />
</system.web>
...
</configuration>
会话状态设置默认情况下,ASP.NET使用cookie来标识哪些请求属于特定会话。如果cookie不可用,则可以通过向URL添加会话标识符来跟踪会话。要禁用cookie,请设置sessionState cookieless =&#34; true&#34;。
需要更多相关知识,请点击以下链接: -
http://msdn.microsoft.com/en-us/library/h6bb9cz9%28vs.80%29.aspx
希望这会对你有所帮助。
<强> EDITED: - 强>
您可以在子目录中放置多个web.config文件,ASP.NET将覆盖您在该目录中更改的任何设置。
大多数情况下,Views目录中的web.config只有一个重要条目,它阻止了直接访问:
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
这是有人无法手动尝试转到http://www.yoursite.com/views/main/index.aspx并将页面加载到MVC管道之外。
&gt;&gt; 在查看您的配置和错误消息之后,我得出结论: 您在配置中使用了configSections标记(在两个地方。),这就是您收到此错误的原因。
<强> EDITED-2 强>: -
我看到你的评论,并认为你应该看看这个页面:)
Format of ASP.NET Configuration Files -
http://msdn.microsoft.com/en-us/library/ackhksh7%28v=vs.71%29.aspx
如何将2个webconfig放在子目录中: -
你应该看看Configuration Inheritance: -
http://msdn.microsoft.com/en-us/library/dtbwsx8s%28v=vs.71%29.aspx
答案 1 :(得分:0)
试试这个:
<system.web>
<sessionState mode="InProc" timeout="5" />
</system.web>
答案 2 :(得分:0)
从MSDN开始说,默认元素未在Machine.config文件或根Web.config文件中显式配置。但是,它是应用程序返回的默认配置。
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
stateNetworkTimeout="10"
sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
sqlCommandTimeout="30"
customProvider=""
cookieless="UseCookies"
cookieName="ASP.NET_SessionId"
timeout="20"
allowCustomSqlDatabase="false"
regenerateExpiredSessionId="true"
partitionResolverType=""
useHostingIdentity="true">
<providers>
<clear />
</providers>
</sessionState>
请阅读完整的MSDN参考from here
答案 3 :(得分:0)
您应该将该部分添加到 main web.config 文件中。 View的web.config文件仅适用于视图。
<system.web>
<sessionState mode="InProc" cookieless="false" timeout="80" />
</system.web>
确保web.config文件中只有一个system.web
标记。如果它已经存在而不是只写<sessionState mode="InProc" cookieless="false" timeout="80" />