2013-01-17 53 views
0

我們有一個會員區的asp.net網站。所有者希望以新的面貌更新網站的公共部分,所以我創建了一個新的登錄頁面,但外觀相同,代碼相同。將頁面放在與原始login.aspx相同的目錄中,但將其稱爲new_login.aspx。測試了新頁面,它可以從我的開發計算機上運行,​​但是從其他計算機進行測試時,會將用戶重定向到不存在的頁面。asp.net登錄重定向到錯誤頁面

兩頁上的代碼如下所示。

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替換了客戶的域名。

我不明白爲什麼這兩個頁面的行爲有所不同。該網站的根級沒有登錄頁面。任何幫助,將不勝感激。

一個新問題。我在web.coonfig身份驗證節點中明確添加了登錄頁面。這有幫助,但沒有完全解決問題。現在,當我們進入登錄頁面並輸入一組有效的憑據時,我得到一個未找到頁面的消息。如果我再次使用相同的憑據登錄,則登錄成功並繼續工作,直到瀏覽器關閉,即使我註銷並重新登錄。我可以在幾臺不同計算機的瀏覽器上和不同瀏覽器中複製此行爲。我無法在我的開發服務器上覆制它。

+0

也許你實際上並沒有登錄該用戶?因此,當他們被重定向到'/ Customer/OrderEntry.aspx'時,該頁面將用戶視爲未通過身份驗證,並且正確地將其重定向到舊的登錄頁面,因爲你沒有改變配置以反映新的登錄頁面嗎?你能確保驗證cookie被設置嗎? – MikeSmithDev

+0

你在'web.config'中檢查了'form'標籤'loginUrl'的值嗎? –

+0

我認爲rs命中了它,我沒有明確定義登錄頁面,所以顯然是這個名字登錄工作。添加了此標記,然後將我的重定向代碼放入回發中的加載事件中。客戶離開現場後將在今晚試穿現場服務器。感謝指針。 – DougM

回答

0

它可能與IIS應用託管的位置有關嗎?它作爲一個網站託管它可能會給你不同的運行時結果vs託管它作爲一個網站內的Web應用程序。

具體來說:試着查看Response.Redirect的相關網址(aspx路徑以「〜/」開頭)。我有一種感覺,這兩個東西是相關的(兩個東西是它是如何託管的, aspx path)