我有一个与 ASP.NET 成员资格和表单身份验证相关的问题。我一直在寻找这个解决方案很长时间(包括 StackOverflow.com),但无法找到与我的方案有关的解决方案。请帮我。
我在应用程序中使用 ASP.NET 成员身份和表单身份验证,问题是在测试应用程序大约 30 多分钟期间,出现以下错误:-
1) 在从池中获取连接之前超时时间已过. 这可能是因为所有池连接都在使用中并且达到了最大池大小。
2) 会话没有过期,也不会重定向到登录页面。
3) 会话值有时会变为空。
该应用程序也在生产中,但客户尚未报告上述任何此类问题。
请在 Web.config 设置下方找到:-
<sessionState timeout="30" mode="InProc">
</sessionState>
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
<providers>
<clear/>
<add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DBSQLServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" passwordFormat="Hashed" applicationName="/ApplicationPortal"/>
</providers>
</membership>
<add name="DBSQLServer" connectionString="Data Source=SERVER-NAME\SQLEXPRESS2008;Initial Catalog=DB-Name;Max Pool Size=100;Trusted_Connection=True;" providerName="System.Data.SqlClient"/>
不要忘记这部分:-
<authentication mode="Forms">
<forms loginUrl="~/Login.aspx" defaultUrl="~/Login.aspx" protection="All" timeout="30">
</forms>
</authentication>
虽然很少有连接没有被处理掉,但现在所有的连接都被正确处理掉了。我在某个地方发现,通过关闭 DataReaders,这将得到解决,但是由于我已经关闭了所有连接,所以如果 DataReaders 在我的场景中没有关闭/处理,这会产生影响吗?
我还想知道同时导致这两个错误的可能问题是什么,以及如何解决这两个问题。
许多页面也使用了内联查询。