2

認証されたユーザーのトークンを HttpRuntime.Cache に格納して、後続のすべてのリクエストで使用する Web サービスがあります。キャッシュされたアイテムには、24 時間のスライド有効期限があります。

次に、この Web サービスに 15 秒ごとに ping を実行する vb.net アプリがあります。一度認証されると、キャッシュされたトークンが後続のすべてのリクエストに使用されます。私の問題は、アプリケーションが 24 時間のスライド有効期限よりも短いランダムな間隔で認証を失ったように見えることです。ただし、15 秒ごとに ping が送信されるため、認証が期限切れになることはありません。

HttpRuntime.cache を表示して、問題が Web サービスのセキュリティ メソッドにあるのか、vb.net アプリ内にあるのかを判断する方法を探しています。どうにかして HttpRuntime.cache を表示できますか?

Web サービスは、Windows Server 2008 上の asp.net 2.0 で構築された Web フォーム サイトの一部です。

4

2 に答える 2

1

私のキーの名前は、ユーザー名を値とするシステム生成の GUID 値であるため、不明でした。そこで、不明なキャッシュ コレクションを表示するために、次のような単純なループを使用しました。

Dim CacheEnum As IDictionaryEnumerator = Cache.GetEnumerator()
While CacheEnum.MoveNext()
    Dim cacheItem As String = Server.HtmlEncode(CacheEnum.Entry.Key.ToString())
    Dim cacheItem2 As String = Server.HtmlEncode(CacheEnum.Entry.Value.ToString())
    Response.Write(cacheItem & ":" & cacheItem2 & "<br />")
End While

これが他の人に役立つことを願っています。

于 2012-10-01T12:35:39.577 に答える
-1

まず、HttpRuntime.Cache は、ユーザー認証情報を保存するのに最適な場所ではありません。そのようなデータを格納するには、代わりに HttpContext.Current.Session を使用する必要があります。技術的には、キャッシュはそれ自体の意志で (それが決定したときはいつでも) 内容を「ポップ」することが許可されています。

実際にキャッシュを使用する必要がある場合は、次のようにしてアイテムがキャッシュにあるかどうかを確認できます。

HttpRuntime.Cache["Key"] == null
于 2012-09-29T07:02:48.713 に答える