![](/img/trans.png)
[英]HttpContext.Current.Request.Url.AbsolutePath generate error in global.asax file
[英]HttpContext.Current.Request.Url.AbsolutePath with Master Page
我正在使用HttpContext.Current.Request.Url.AbsolutePath作為我的安全性的一部分,用戶在訪問某些頁面之前需要登錄。
在此示例中,效果很好。 用戶必須先登錄才能查看其個人資料。
if (Session["UserID"] == null)
{
Response.Redirect("Login.aspx/?ReturnURL=" + HttpContext.Current.Request.Url.AbsolutePath);
}
最終結果如下所示:
http://localhost:54324/Login.aspx/?ReturnURL=/Profile_Page.aspx
我遇到的問題是頁面是母版頁的一部分。 當重定向發生到登錄頁面時,母版頁上的所有內容均不起作用。 導航鏈接不會觸發,圖像顯示斷開的鏈接等。但是,當我直接訪問登錄頁面時,母版頁中的所有內容都可以正常工作。
您的重定向URL中有一個額外的正斜杠:
Response.Redirect("Login.aspx/?ReturnURL=" + HttpContext.Current.Request.Url.AbsolutePath);
^
您的登錄頁面仍然可以正確加載,因為ASP.NET將斜杠視為其他路徑信息的分隔符,類似於問號是查詢字符串的分隔符的方式。
但是,額外的斜杠會導致瀏覽器解析相對於名為Login.aspx的子目錄而不是相對於應用程序根目錄的鏈接和圖像的相對URL。 例如,如果您有圖像<img src="Logo.png">
,則瀏覽器將嘗試加載Login.aspx / Logo.png。 刪除正斜杠應該可以解決重定向問題:
Response.Redirect("Login.aspx?ReturnURL=" + Request.Url.AbsolutePath);
但是,如果訪客手動添加斜杠,URL仍然會損壞。 為避免這種情況,請使用內置的<asp:HyperLink>
和<asp:Image>
服務器控件,它們將生成考慮了額外斜杠的相對URL:
<asp:HyperLink runat="server" NavigateUrl="~/About.aspx" Text="About Us" />
<asp:Image runat="server" ImageUrl="Logo.png" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.