2011-05-06 133 views
9

我的ASP.NET Forms 4.0網站正在運行窗體身份驗證。默認情況下,未經授權的用戶被拒絕,然後我允許訪問某些頁面。 我有一個問題,允許訪問默認的網址:http:/example.com。我在web.config中找到相關定義默認頁:允許匿名訪問默認頁面

<defaultDocument> 
    <files> 
     <clear/> 
     <add value="default.aspx" /> 
    </files> 
</defaultDocument> 

,我有這樣的定位越權:

<location path="default.aspx"> 
    <system.web> 
     <authorization> 
      <allow users="?"/> 
     </authorization> 
    </system.web> 
</location> 

它的工作原理確定,當我去的完整URL:http://example.com/default.aspx,但重定向到登錄頁面如果我去http://example.com

任何想法我做錯了什麼?

+0

我知道你在做什麼錯誤 - 'path'匹配被請求的路徑,而不是它被重定向到的路徑(在服務器端),所以http://mysite.com與默認值不匹配。 ASPX。我不能幫你修復它,雖然:( – Ryan 2011-05-06 20:39:57

+0

請參閱我的答案有關刪除ExtensionlessUrl模塊[窗體身份驗證忽略默認文檔:](http://stackoverflow.com/questions/3824951/forms-authentication-ignoring-default -document) – 2011-07-07 13:26:21

回答

10

我在響應(德米特里·)剛剛找到答案,類似的問題在這裏SO:Forms Authentication Ignoring Default Document

在Global.asax中,方法:的Application_BeginRequest,放置以下:

if (Request.AppRelativeCurrentExecutionFilePath == "~/") 
    HttpContext.Current.RewritePath("default.aspx"); 

曾任職像魅力!

+0

你爲我節省了很多頭痛...是的,它是2015年,我仍在使用網絡表單,謝謝! – 2015-04-01 03:50:07

-2

這對我的作品在測試Web應用程序:

<location path=""> 
    <system.web> 
     <authorization> 
      <deny users="*"/> 
     </authorization> 
    </system.web> 
</location> 

<location path="Default.aspx"> 
    <system.web> 
     <authorization> 
      <deny users="*"/> 
     </authorization> 
    </system.web> 
</location> 

現在我不能讓任「/」或「/Default.aspx」 - 給一個嘗試(但使用allow代替) 。

+1

它不喜歡它 - IIS扔了一個錯誤,路徑是空的 – Andrey 2011-05-06 20:59:26

+0

好吧,我不確定...對不起! – 2011-05-06 21:00:04

+1

@Josh - 你可以刪除你的答案,所以它不會誤導別人嗎?我不想downvote它:) – Andrey 2011-05-06 21:00:48

3

我剛剛想出瞭如何解決這個問題,而不必欺騙重定向。

如果在從.Net 2轉換到.Net 4之後我發生了這種情況,我從來沒有在互聯網上的任何地方找到我的解決方案,所以在這裏。

如果像我一樣的登錄頁面也是默認的頁面,你需要確保你以下兩件事情在web.config文件

添加這免除身份驗證Default.aspx的(沒這需要在.net 2)

<location path="default.aspx"> 
    <system.web> 
     <authorization> 
      <allow users="*" /> 
     </authorization> 
    </system.web> 
</location> 

而從這個

<forms name="myform" loginUrl="~/default.aspx" timeout="240" defaultUrl="~/home.aspx" slidingExpiration="true" protection="All" path="/" /> 

更改登錄網址這個

<forms name="myform" loginUrl="~/" timeout="240" defaultUrl="~/home.aspx" slidingExpiration="true" protection="All" path="/" /> 

,你應該罰款各項工作NOWS,剛剛嘗試過了兩個不同的網站和它的伎倆,我

+0

不是一個真正的解決方案,你只是將身份驗證網址(login.aspx)更改爲你的根目錄。反對它的建議。 – 2015-12-09 20:57:56

1

我不喜歡做針對此問題的代碼更改,尤其是因爲我的網站在我的Windows Server 2008 R2機器上工作正常,但在我的Windows 7 SP1開發機器上無法正常工作。

事實證明,這個問題的根源是在Service Pack 1的Windows 7的更新:

http://support.microsoft.com/kb/2526854

的解決方案似乎是禁止添加的新的「ExtensionlessUrl」功能在SP1:

<system.webServer> 

    <handlers> 
    <remove name="ExtensionlessUrl-ISAPI-4.0_32bit" /> 
    <remove name="ExtensionlessUrl-ISAPI-4.0_64bit" /> 
    <remove name="ExtensionlessUrl-Integrated-4.0" /> 
    </handlers> 

    <validation validateIntegratedModeConfiguration="false" /> 

</system.webServer> 

顯然,如果你正在使用ExtensionlessUrl功能這不會爲你工作,但是我在這裏記錄它爲那些遷移遺留網站,想知道什麼突然走ne錯了。