0

私は、DefaultWebSiteで動作するいくつかのアプリケーションおよびWebサービスの1つとしてIIS7でセットアップされたWebアプリケーションに取り組んでいます。ローカルホストで開発する場合、FormsAuthenticationCookieは保持されます。ただし、サーバーで公開された場合、Cookieは永続的ではありません。SQLServerセッションを使用しており、アプリケーションプールのリサイクルを除外するための検証キーがWeb構成にあります。私はこれをしばらくの間理解しようとしていましたが、運がありません...助けてください!

以下にいくつかのコードを示します。

<forms name=".OPTFORMSTEST" loginUrl="~/Secure/Login.aspx" defaultUrl="~/Default.aspx"  timeout="240" path="/" slidingExpiration="false" protection="All" />

Public Shared Function DoLogin(ByVal strUsername As String, ByVal isPersistent As Boolean)
    Dim authTicket As FormsAuthenticationTicket
    Dim authCookie As HttpCookie
    Dim strUserData As String = strUsername
    Dim intTimeoutPersist As Integer = 43200    '(30 days)
    Dim intTimeoutNonPersist As Integer = 300   '(5 hours)
    Dim intRtn As Integer = 1
    Dim strCookiePath As String = Current.Request.Url.AbsolutePath.Remove(Current.Request.ApplicationPath.Length)

    Try
        'set cookie timout period and create auth ticket based on isPersistent
        If isPersistent Then
            'create a persistent ticket
            authTicket = New FormsAuthenticationTicket(1, strUsername, _
                DateTime.Now(), _
                DateTime.Now.AddMinutes(intTimeoutPersist), _
                True, strUserData)
        Else
            'create a temp ticket
            authTicket = New FormsAuthenticationTicket(1, strUsername, _
                DateTime.Now(), _
                DateTime.Now.AddMinutes(intTimeoutNonPersist), _
                False, strUserData)
        End If

        'create encrypted string for user data
        Dim strEncr As String = FormsAuthentication.Encrypt(authTicket)
        'create cookie
        authCookie = New HttpCookie("OPTFORMSTEST", strEncr)
        'set cookie expiration based on the auth ticket
        If isPersistent Then
            authCookie.Expires = authTicket.Expiration
        End If
        Current.Response.Cookies.Add(authCookie)
    Catch ex As Exception
        intRtn = -1
    End Try
    Return intRtn
End Function
4

1 に答える 1

0

いくつかの実験の結果、RedirectFromLoginPageメソッドが本番ボックスから使用されたときに別のCookieを作成していることがわかりました。Response.Redirectに置き換えたところ、Cookieが1つだけ作成され、永続的でした。

于 2013-02-27T19:58:26.383 に答える