6

何を試しても、ユーザーが 10 分後にログオフされるという、非常に悪い問題が発生しています。

適用可能なすべての更新プログラムと .Net 3.5 SP1 を備えた仮想サーバーとして実行されている Server 2003 R2 Standard Edition 上の IIS 6.0 で実行されている ASP.Net 2.0 を使用しています。

クライアントは Internet Explorer 7.0 です

以下は、web.config 設定です。

<!-- Authentication Mode -->
<authentication mode="Forms">
  <forms name=".RecipeViewer" timeout="240" />
</authentication>

以下は、認証 Cookie を設定するために使用されるコードです。

Private Sub SetCookie(userName)
                ' Use security system to set the UserID within a client-side Cookie
                Dim ticket As New FormsAuthenticationTicket(1,userName, DateTime.Now, DateTime.Now.Add(Me.GetFormsAuthSettings.Forms.Timeout), True, String.Empty, FormsAuthentication.FormsCookiePath)
                Dim hash As String = FormsAuthentication.Encrypt(ticket)
                Dim cookie As New HttpCookie(FormsAuthentication.FormsCookieName, hash)

                cookie.HttpOnly = True

                If (ticket.IsPersistent) Then
                    cookie.Expires = ticket.Expiration
                End If

                Response.Cookies.Add(cookie)

                ' Redirect browser back to originating page
                Response.Redirect(Request.ApplicationPath)
End Sub

    Private Function GetFormsAuthSettings() As System.Web.Configuration.AuthenticationSection
        Return DirectCast(System.Configuration.ConfigurationManager.GetSection("system.web/authentication"), System.Web.Configuration.AuthenticationSection)
    End Function

以前は FormsAuthentication.SetAuthCookie を使用していましたが、FormsAuthentication.RedirectFromLoginPage メソッドも試していましたが、これらはどちらも同じ結果でした。 FormsAuthentication クラスが行います。


この問題は、Visual Studio 2008 asp.net ホスティング環境または IIS 7.0 では再現できません。


EDIT : ホストされたサイトが信頼できるサイトとして追加されていても、Cookie は有効になっています。


編集: Google Chrome と Firefox にはこの問題はありません。


EDIT : ターゲット マシンの検証済み Cookie は、設定に従って 4 時間後に期限切れになるように設定されています (タイムアウト = 240 分)。


編集:ハウスが言うように、誰もが嘘をつきます。ユーザーは新しいコード ベースを実際にテストせず、ソフトウェアがまだ壊れているという先入観を持っていました。このトピックに返信してくださった皆様、ありがとうございます。

関連性がなくなったためにこれを閉じるのではなく、この質問には非常に優れたトラブルシューティング手法がいくつかあるため、人々が問題のトラブルシューティングを行うのに役立つようにしておいてください。

4

7 に答える 7

6

また、machinekey が設定されておらず、アプリが初期化されるたびにランダムに生成されていた可能性もあります (これは、暗号化された認証チケットが新しいキーでソルトされることを意味します)。

サイトを使用してアプリ用の新しいマシンキーを生成し、web.config に貼り付けます。

http://www.orcsweb.com/articles/aspnetmachinekey.aspx

<?xml version="1.0"?>

<configuration>

    <appSettings/>
    <connectionStrings/>
    <system.web>

        <machineKey validationKey='FED01BCB246D3477F5854D60388A701508AD1DF9099BD3CAC3CA4DAF55F7524B8DD3FA03133BBCA381BC1CD639730445968DFA633A97911187EF187456D692F4' decryptionKey='861E7DF7C2D04297EEFAD47FF3B95F54E87CF28D6C2753D8' validation='SHA1'/>

    </system.web>
</configuration>
于 2009-01-12T16:46:37.653 に答える
1

要件は IE ですが、Firefox と Firebug および FireCookie を使用して、Cookie と有効期限を監視できます。

IE では、IE Developer Toolbar をダウンロードできます。このツールバーでは、[キャッシュ] メニューの [Cookie 情報の表示] を使用して Cookie の値を確認できます。

Google Chrome で正常に動作するかどうかは不思議です。おそらく、global.asax の Application_BeginRequest イベントを使用してリクエストをキャプチャし、受信した Cookie とその値をログに記録できます。

于 2009-01-12T15:42:44.037 に答える
1

未処理の例外により、proc が再起動する可能性があります。これにより、奇妙な動作が追加される可能性があります。イベントログに何か報告されていますか?

于 2009-01-12T16:00:21.927 に答える
0

私は過去に同様の問題を抱えていましたが、それがあなたが話していることかどうかはわかりません。あなたの問題が本番システム(または頻繁にロードされるシステム)では発生しないというのは正しいですか?その場合、問題はワーカースレッドのアイドルタイムアウトである可能性があります。[IISマネージャー]->[アプリケーションプール]を右クリックして[パフォーマンス]タブに移動し、[アイドルタイムアウト]の下のチェックボックスで変更またはオフにしてみてください。そのダイアログの[リサイクル]タブにあるものも興味深いかもしれません。

于 2009-01-12T15:34:56.767 に答える
0

InProc を使用して保存するようにセッション状態を変更します。ユーザーがエラーに遭遇したときに、セッションが InProc を使用して保存されていないときにセッションが本質的に停止するという私のような問題に直面している可能性があります。

セッションの種類: http://msdn.microsoft.com/en-us/library/ms178586(v=vs.100).aspx

于 2012-09-11T08:38:42.930 に答える
0

クライアントは本番コードをテストせず、パッチが本番環境に適用される前に、以前の問題からまだ応答していました。

同じ環境で再現できない場合は、問題の再現を観察できるミーティングをお勧めします。


48 時間後に回答としてフラグを立てます。

于 2009-01-12T16:30:32.317 に答える