登录后约 30-60 秒意外注销

unexpected Logout approximately in 30-60 seconds after login

我使用 .netCore 编写了一个站点,在本地一切正常。但是在服务器上我不能长时间保持登录状态。将我踢出登录页面需要 30-60 秒,我需要重新登录。

我的主机允许我为一个进程使用最多 1 GB 的内存。但是我在 Application_pool_exceeded_limits.log 中有这个日志: 17:33:59 进程 ID 为“253876”的工作进程服务于应用程序池 'u123456789.plsk.[hostingname].com(domain)(4.0)(pool)' 已请求回收,因为它已达到其虚拟内存限制。

我决定检查一下如果删除登录页面以外的所有内容是否会出现此问题。无论如何都会出现这个问题。

那是我的 web.config:

    <?xml version="1.0" encoding="UTF-8"?>
     <configuration>
      <system.web>
       <identity impersonate="true" />
       <machineKey validationKey="AutoGenerate,IsolateApps"
                   decryptionKey="AutoGenerate,IsolateApps" 
                   validation="HMACSHA256" 
                   decryption="Auto" />
        <sessionState regenerateExpiredSessionId="true" 
                      timeout="60" 
                      cookieName="MyCookie" 
                      cookieless="UseCookies" />
      </system.web>
      <location path="." inheritInChildApplications="false">
      <system.webServer>
       <validation validateIntegratedModeConfiguration="false" />
       <modules runAllManagedModulesForAllRequests="true">
        <remove name="WebDAVModule" />
       </modules>
     <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
     </handlers>
     <aspNetCore processPath=".\Account.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
  </system.webServer>

您可以尝试更改虚拟内存限制:

  1. 打开 IIS 管理器。
  2. 在连接面板中,select 应用程序池。
  3. 在“应用程序池”面板中,select 正在使用的应用程序池。
  4. 在“操作”面板中,单击“高级设置”...
  5. 向下滚动到回收部分。
  6. 将虚拟内存限制 (KB) 的值更改为 0。
  7. 单击“确定”。

我不知道这是否是最佳做法,但我可以通过将 [appName].runtimeconfig.json 中的“System.GC.Server”更改为“false”来解决问题。