0

メンバーシップエリアのあるasp.netサイトがあります。所有者はサイトの公開部分を新しい外観で更新したかったので、新しい外観で新しいログインページを作成しましたが、コードは同じです。ページを元のlogin.aspxと同じディレクトリに配置しますが、それをnew_login.aspxと呼びます。新しいページをテストしましたが、開発用コンピューターからは機能しますが、他のコンピューターからテストすると、ユーザーは存在しないページにリダイレクトされます。

両方のページにあるコードは次のとおりです。

   Protected Sub LoginButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim sUser As String = Me.New_Login.UserName
        If Roles.IsUserInRole(sUser, "Administrator") Then
            Response.Redirect("~/Manager/AMSEmployees.aspx")
        ElseIf Roles.IsUserInRole(sUser, "Manager") Then
            Response.Redirect("~/Manager/AMSEmployees.aspx")
        ElseIf Roles.IsUserInRole(sUser, "Employee") Then
            Response.Redirect("~/AMSEmployee/AMSContacts.aspx")
        ElseIf Roles.IsUserInRole(sUser, "Contact") Then
            Response.Redirect("~/Customer/OrderEntry.aspx")
        End If
    End Sub

元のページでは、連絡先をhttp://www.xxxxx.com/Customer/OrderEntry.aspxに適切にリダイレクトします。新しいページでは、リダイレクトはhttp://www.xxxxx/login.aspx?ReturnUrl=%2fCustomer%2fOrderEntry.aspxに移動します。お客様のドメイン名をxxxxxに置き換えました。

2つのページの動作が異なる理由がわかりません。サイトのルートレベルにはログインページはありません。どんな助けでもいただければ幸いです。

新しい問題。web.coonfig認証ノードにログインページを明示的に追加しました。それは役に立ちましたが、問題を完全に解決することはできませんでした。ログインページに移動して有効なクレデンシャルのセットを入力すると、ページが見つかりませんというメッセージが表示されます。その後、同じクレデンシャルで再度ログインすると、ログインは成功し、ログアウトしてから再度ログインした場合でも、ブラウザがシャットダウンするまで機能し続けます。この動作は、複数の異なるコンピューターのブラウザーおよび異なるブラウザーで複製できます。開発サーバーでこれを複製することはできません。

4

1 に答える 1

0

IIS で Web アプリがホストされている場所と何か関係があるのでしょうか? Web サイトとしてホストすると、Web サイト内で Web アプリケーションとしてホストする場合とは異なる実行結果が得られる場合があります。

具体的に言えば、相対 URL ("~/" で始まる aspx パス) がある Response.Redirect を調べてみてください。これら 2 つのことが関連していると感じています (2 つのことは、ホストされている方法とこの aspx パスです)。

于 2013-01-17T19:52:10.940 に答える