簡體   English   中英

帶有Response.AddHeader的相對路徑

[英]Relative Path with Response.AddHeader

用戶更改密碼后,我正在運行計時器並執行重定向(又名,通知他們密碼已更改,然后將其發送回首頁)。 但是,我似乎無法在下面的代碼中執行相對路徑。 下面列出的是我想做什么:

Response.AddHeader("REFRESH", "2;URL="~/pages/home.aspx");

為什么這不起作用? 我如何使它工作? (我知道我可以在站點的其他部分進行相對路徑,但這是因為它正在服務器端運行。)謝謝。

您需要為REFRESH標頭指定一個絕對URL。 看一下這篇文章,展示如何從相對對象獲取絕對URL(您可以使用此處顯示的ResolveServerUrl ):

Response.AddHeader("REFRESH", "2;url=" + ResolveServerUrl("~/pages/home.aspx"));

以供參考:

/// <summary>
/// This method returns a fully qualified absolute server Url which includes
/// the protocol, server, port in addition to the server relative Url.
/// 
/// Works like Control.ResolveUrl including support for ~ syntax
/// but returns an absolute URL.
/// </summary>
/// <param name="ServerUrl">Any Url, either App relative or fully qualified</param>
/// <param name="forceHttps">if true forces the url to use https</param>
/// <returns></returns>
public static string ResolveServerUrl(string serverUrl, bool forceHttps)
{
    // *** Is it already an absolute Url?
    if (serverUrl.IndexOf("://") > -1)
        return serverUrl;

    // *** Start by fixing up the Url an Application relative Url
    string newUrl = ResolveUrl(serverUrl);

    Uri originalUri = HttpContext.Current.Request.Url;
    newUrl = (forceHttps ? "https" : originalUri.Scheme) + 
             "://" + originalUri.Authority + newUrl;

    return newUrl;
} 

/// <summary>
/// This method returns a fully qualified absolute server Url which includes
/// the protocol, server, port in addition to the server relative Url.
/// 
/// It work like Page.ResolveUrl, but adds these to the beginning.
/// This method is useful for generating Urls for AJAX methods
/// </summary>
/// <param name="ServerUrl">Any Url, either App relative or fully qualified</param>
/// <returns></returns>
public static string ResolveServerUrl(string serverUrl)
{
    return ResolveServerUrl(serverUrl, false);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM