セッションプロバイダがコンフィグレーションで設定されていないときにセッションタイムアウト値を取得する方法は?

私は現在自分の独自のセッションプロバイダを実装していますが、設定ファイルのエントリが存在しない場合、またはセッションプロバイダが別の場所からそれを取得するはずです。

9
独自のセッションプロバイダを実装する場合は、デフォルトのプロバイダの設定があるかどうかを確認するために、設定ファイルを調べなければならないことを考慮する必要があります。しかし、自分の設定(セッションプロバイダ)を見て実装のタイムアウトを調べるべきです。
追加された 著者 Peter,
私はそれを考慮しましたが、20分がデフォルトセッションプロバイダの実装の詳細なのか、それとも他のどこかで利用可能かどうかを知りたがっています。
追加された 著者 user215361,

5 答え

グローバル設定ファイルで値を見つけることができませんでしたが、どこかで定義されています。

次のコードを使用すると、ローカルweb.configで定義されているかどうかにかかわらず、セッションタイムアウト値を取得できます。

Configuration conf = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath);
SessionStateSection section = (SessionStateSection) conf.GetSection("system.web/sessionState");
int timeout = (int) section.Timeout.TotalMinutes;
15
追加された

以下を使用してください。

System.Int64 timeout = System.Web.HttpContext.Current.Session.Timeout;//The time-out period, in minutes
6
追加された
現在のセッションが開始されていないとき(たとえば、アプリの起動中)にnull参照例外がスローされます。
追加された 著者 Hristo Yankov,

http://msdn.microsoft.com/en-us/library/aa478952.aspx

私が上にリンクした記事によると、タイムアウト値がどこにも設定されていない場合、デフォルトの20分が使用されます。これは、カスタムプロバイダーと組み込みの両方の場合のようです。

0
追加された
stackoverflow.com/questions/1382791/… httpcontext.sessionがnullの場合、セッションオブジェクトは開始されておらず、タイムアウトもセッション関連の情報もありません。
追加された 著者 Jeff Turner,
私もそれを読んだが、現在のタイムアウト値が必要で、 HttpContext.Session null です。
追加された 著者 user215361,
セッションプロバイダを呼び出した後でに構築されていることは間違いありません。
追加された 著者 user215361,

Session.Timeoutを使用して値を取得することができます

0
追加された
HttpContext.Session null です。
追加された 著者 user215361,

Global.asaxでは、

Session.TimeOut

Session_Startで実行するか、コード内の別の場所に設定します。

0
追加された
質問は値を取得することであり、 HttpContext.Session はnullです。
追加された 著者 user215361,
私は実際には現在のコンテキストを表現するインスタンス化された HttpContext を持っていました。したがって、 HttpContext.Current.Session null です。
追加された 著者 user215361,
セッションプロバイダを呼び出した後でに構築されていることは間違いありません。
追加された 著者 user215361,
HttpContext.Current.Sessionを試しましたか?
追加された 著者 antar,
このリンクを確認してください: stackoverflow.com/questions/1382791/… それが役に立てば幸い。
追加された 著者 antar,