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. ASP.NETセッション管理DeleteExpiredSessions愚かなようですか?
- 2. Xamarin.iOSのカスタムSQLite関数
- 3. AzureのASP.NetコアSqlite
- 4. カスタムAsp.netナビゲーションメニュー
- 5. ASP.NETカスタムWebコントロール
- 6. ASP.NETカスタム404
- 7. Asp.netカスタムajaxファイルアップローダー
- 8. カスタムASP.NETエラーメッセージ
- 9. カスタムASP.NETメニューコントロール
- 10. カスタムASP.NETコンテナコントロールフォーム
- 11. CKFInderカスタムasp.netコントロールエラー
- 12. ASP.Net MVCカスタム認証
- 13. ASP.NETカスタム認証ハンドラ
- 14. ASP.NET MVC 4カスタムURL
- 15. カスタムデータベースのカスタムAsp.net ID
- 16. カスタムASP.NETコアクッキー認証
- 17. ASP.NET ID - カスタムUserManager、UserStore
- 18. ASP.NET MVC2のカスタムDropdownFor
- 19. asp.netのカスタム認証
- 20. カスタムASP.NET構成セクション
- 21. Android:DesignカスタムSQLiteを使用したListView
- 22. FMDB SQLiteラッパーとユーザー定義/カスタム関数
- 23. asp.netカスタムHttpHandlerとURLルーティング
- 24. ASP.NETカスタムRoleProvider - クッキーの使用
- 25. ASP.NET MVCカスタムModelMetadataProviderとModelValidatorProvider
- 26. Asp.Net Core 2.0のカスタム環境
- 27. カスタム認証asp.netコアweb api
- 28. ASP.Net-Coreのカスタム認証
- 29. ASP.NET MVC 3カスタムMembershipProviderとMembershipUser
- 30. asp.net mvc5 HttpPostのカスタム認証
"DeleteExpiredSessions()"という名前は、現在のコンテキストに存在しません。 – tincopper2
これは、https://github.com/micahlmartin/SQLiteSessionStateStore(DeleteExpiredSessions()に名前を変更してパブリックにする)で提供されている方法で、データベース内のクリーンアッププロシージャを呼び出します。 オンラインでは、msdnでもセッションクリーンアップ手順のいくつかの例があります。作成を手助けする必要がある場合や、別の質問でより適切に処理されるデータレイヤを実装する必要がある場合。あなたが関連する質問がある場合は私に教えてください。私は助けにジャンプします。 –
データベースをクリーンアップするメソッドを呼び出すことはありません。これはプロバイダのインスタンスを参照せず、静的ライブラリのみを参照します。 – tincopper2