簡體   English   中英

Asp.Net表單身份驗證重定向到…/ myapp / default.aspx而不是…/ myapp /

[英]Asp.Net forms authentication redirects to …/myapp/default.aspx instead of …/myapp/

身份驗證后,asp.net將我的用戶重定向到... / myapp / default.aspx而不是... / myapp /

有什么解決辦法嗎? 我認為在URL上不包含多余的default.aspx是多余的,這有點丑陋。

我嘗試將以下代碼放入default.aspx.cs page_load函數中,但由於無法區分用戶訪問的是myapp /還是myapp / default.aspx,它會導致重定向循環:

if (Request.RawUrl.ToLower().EndsWith("/default.aspx"))
  Response.Redirect("./");

謝謝!

如果您使用的是登錄控件,請自行決定重定向的方式。 使用登錄控件的事件(我認為它是Authenticate),並:

if (Request.QueryString["ReturnUrl"] != null)  
{  
    FormsAuthentication.RedirectFromLoginPage("someuserid", false);  
}  
else  
{  
    FormsAuthentication.SetAuthCookie("someuserid", false);  
    Response.Redirect("~/SomePage.aspx");  
} 

解決此問題的最簡單方法是從web.config中刪除defaultUrl屬性

<authentication mode="Forms">
    <forms ... defaultUrl="default.aspx" ... />
</authentication>

當您訪問www.yourwebsite.com/myapp時,返回URL將為“ / myapp /”,並且在登錄后,它將重定向回“ / myapp /”。 如果使用上述的defaultUrl,它將重定向到“ /myapp/default.aspx”。 實際上,我在網站的根目錄上對此進行了實驗,但是我認為它對於子目錄也同樣有效。

您將需要查看IIS中設置的默認頁面。

實際上,沒有像"./"這樣的文件可以為Web服務器處理。 必須有一個默認文件將提供給客戶端。 因為沒有人想要鍵入"blabla.com/index.aspx"而不是"blabla.com" 您的問題是選擇哪個頁面作為默認頁面。

在IIS中,右鍵單擊您的網站,然后找到屬性。

有一個選項卡,其中包含“默認頁面”順序。 必須有幾個網頁,例如“ index.htm,default.aspx等”。 更改這些文件名的順序。 要調用的頁面必須在頂部。

PS:您的登錄頁面和登錄頁面是同一頁面! 因此,它將被多余地調用!

這不是多余的重定向。

為什么? 因為當您在Web服務器上單擊/時,Web服務器仍將您重定向到/default.aspx。 您只是讓IIS代替身份驗證機制而已。

-Oisin

我有同樣的問題。 我的登錄頁面為default.aspx,當您單擊該應用程序時,重定向URL設置為/ MyApp /。

我認為最終結果是我必須將登錄頁面重命名為其他名稱(login.aspx)

暫無
暫無

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

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