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。我把客户的域名换成了xxxxxx。

我无法弄清楚为什么这两个页面的行为不同。站点的根级别没有登录页面。任何帮助,将不胜感激。

一个新的问题。我在 web.coconfig 身份验证节点中显式添加了登录页面。这有所帮助,但并没有完全解决问题。现在,当我们进入登录页面并输入一组有效凭据时,我会收到一条找不到页面的消息。如果我随后使用相同的凭据再次登录,则登录成功并继续工作,直到浏览器关闭,即使我注销然后重新登录也是如此。我可以在几台不同计算机的浏览器和不同的浏览器中复制这种行为。我不能在我的开发服务器上复制它。

4

1 回答 1

0

它与 Web 应用程序在 IIS 中托管的位置有什么关系吗?将其托管为网站与将其托管为网站内的 web 应用程序可能会给您不同的运行时结果。

具体来说:尝试查看具有相对 url 的 Response.Redirect(以“~/”开头的 aspx 路径。我觉得这两件事是相关的(两件事是它的托管方式和这个 aspx 路径)。

于 2013-01-17T19:52:10.940 回答