[英]stripping default.aspx and //www from the url
/Default.aspx
和//www
的代碼不起作用(按預期方式):
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext context = HttpContext.Current;
string url = context.Request.RawUrl.ToString();
bool doRedirect = false;
// remove > default.aspx
if (url.EndsWith("/default.aspx", StringComparison.OrdinalIgnoreCase))
{
url = url.Substring(0, url.Length - 12);
doRedirect = true;
}
// remove > www
if (url.Contains("//www"))
{
url = url.Replace("//www", "//");
doRedirect = true;
}
// redirect if necessary
if (doRedirect)
{
context.Response.Redirect(url);
}
}
它通常可以正常工作,但是在提交表單(例如登錄)時,上面的代碼在INTERCEPTS上發出請求,然后重定向到同一頁面。 例:
~/SignIn/Default.aspx
~/SignIn/
~/SignIn/
到~/SignIn/Default.aspx
並再次得到修復,從而使SignIn
方法的處理無效(該方法會將瀏覽器重定向到/SignIn/Success/
),並且頁面為重新加載為~/SignIn/
並且未完成登錄。 請幫忙。 不知道該如何/如何解決。
這里的主要要求是:
從網址中刪除/Default.aspx
和//www
n
您的問題是與GET和POST請求有關。 當您調用Response.Redirect
,您指示客戶端對您提供的URL進行新的GET請求。 因此,如果您在表單回發這樣的請求(實際上是POST請求)中盡早調用此命令,則會丟失該帖子。 由於大多數POST都應在操作完成后自行重定向,因此僅將上面具有的邏輯應用於GET請求就足夠了。
您可以使用Request.HttpMethod
訪問請求方法(GET或POST)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.