SQLiteSessionStateStoreProvider.DeleteExpiredSessions()は、IIS 7で任意の間隔で自動的に実行されません。セッション状態ストレージ用のデータベースがinProc上にある場合は、実行時に自動的に管理され、実際のSQLデータベース上にあった場合、クリアするためにSQLエージェントによって実行されるスクリプトが存在することを理解しています期限切れセッション。しかし、私の問題は、ライブラリに定義されている関数がライブラリに定義されているにもかかわらず、https://github.com/micahlmartin/SQLiteSessionStateStore(DeleteExpiredSessions()に改名され公開されました)IISサーバにこの関数を呼び出す方法が不明です。これを呼び出すバックエンドの私自身のものです。 IISサーバーでは、セッションの状態がカスタムに設定され、20分間隔で有効期限が切れます。サーバーのweb.configの設定と同じように、Cookieモードに設定されています。データベースは現在、セッション状態のために過去7日間のデータを保持しています。バックエンドからやり取りする方法が不明です。サービスや実装が欠落しています。 C#MVCを使用してSQLite経由でカスタムSessionStateProviderを実行した経験があれば誰でもこれを解決する方法を理解しているはずです。ありがとうございます。ASP.NETカスタムSQLite DeleteExpiredSessions()
0
A
答えて
0
はあなたのGlobal.asaxからこのような何かを試してみてください:
それは(DeleteExpiredSessionsを実行します)、約10分後。その間、0.25秒ごとにチェックし、アプリケーションがシャットダウンしているかどうかを確認します。シャットダウンしている場合は停止します。
public class Global : System.Web.HttpApplication
{
public static Task SessionCleanup { get; private set; } = null;
public static bool ApplicationEnding { get; private set; }
public static void PeriodicallyRunSesssionCleanup()
{
int cleanupInterval = 600000;//10 minutes
int sleepInterval = 250;// 1/4 second
while(!ApplicationEnding && cleanupInterval > 0)
{
Thread.Sleep(sleepInterval);
cleanupInterval -= sleepInterval;
}
if(!ApplicationEnding)
{
throw new NotImplementedException("Place your code that cleans up sessions here to have it run every 10 minutes.");
SessionCleanup = new Task(PeriodicallyRunSesssionCleanup);
SessionCleanup.Start();
}
}
protected void Application_Start(object sender, EventArgs e)
{
SessionCleanup = new Task(PeriodicallyRunSesssionCleanup);
SessionCleanup.Start();
}
protected void Application_End(object sender, EventArgs e)
{
ApplicationEnding = true;
if (SessionCleanup != null) SessionCleanup.Wait();
}
}
関連する問題
- 1. Xamarin.iOSのカスタムSQLite関数
- 2. AzureのASP.NetコアSqlite
- 3. ASP.NETカスタム404
- 4. カスタムAsp.netナビゲーションメニュー
- 5. Asp.netカスタムajaxファイルアップローダー
- 6. カスタムASP.NETメニューコントロール
- 7. カスタムASP.NETコンテナコントロールフォーム
- 8. ASP.NETカスタムWebコントロール
- 9. カスタムデータベースのカスタムAsp.net ID
- 10. ASP.NET MVC 4カスタムURL
- 11. ASP.Net MVCカスタム認証
- 12. asp.netのカスタム認証
- 13. カスタムASP.NET構成セクション
- 14. ASP.NET MVC2のカスタムDropdownFor
- 15. カスタムASP.NETコアクッキー認証
- 16. ASP.NETカスタム認証ハンドラ
- 17. ASP.NET ID - カスタムUserManager、UserStore
- 18. FMDB SQLiteラッパーとユーザー定義/カスタム関数
- 19. Android:DesignカスタムSQLiteを使用したListView
- 20. ASP.NET MVCカスタムModelMetadataProviderとModelValidatorProvider
- 21. ASP.NET MVC 3のカスタム権限
- 22. ASP.NETカスタムRoleProvider - クッキーの使用
- 23. ASP.Netコアのカスタム認証メカニズム
- 24. ASP.NET Web APIのカスタムMVC AuthorizeAttribute
- 25. ASP.Net-Coreのカスタム認証
- 26. ScrewTurn wikiとカスタムasp.netメンバーシッププロバイダ
- 27. asp.net mvc:カスタムViewModelフォーム投稿
- 28. カスタムHTTPハンドラIIS7とASP.NET
- 29. ASP.NET MVCカスタム認可:AuthorizeAttribute
- 30. IIS 7,7.5のASP.NETカスタムHttpHandler
"DeleteExpiredSessions()"という名前は、現在のコンテキストに存在しません。 – tincopper2
これは、https://github.com/micahlmartin/SQLiteSessionStateStore(DeleteExpiredSessions()に名前を変更してパブリックにする)で提供されている方法で、データベース内のクリーンアッププロシージャを呼び出します。 オンラインでは、msdnでもセッションクリーンアップ手順のいくつかの例があります。作成を手助けする必要がある場合や、別の質問でより適切に処理されるデータレイヤを実装する必要がある場合。あなたが関連する質問がある場合は私に教えてください。私は助けにジャンプします。 –
データベースをクリーンアップするメソッドを呼び出すことはありません。これはプロバイダのインスタンスを参照せず、静的ライブラリのみを参照します。 – tincopper2