2011-08-30 69 views
28

我有一個奇怪的錯誤,我從來沒有遇到過。被重定向到錯誤的loginUrl - >帳戶/登錄而不是帳戶/ LOGON

我獲得了控制器:

[Authorize(Roles = "admin")] 
public class LoggingController : Controller 

當非管理員用戶試圖訪問任何受保護的內容,他們將被重定向到:

http://localhost:50501/Account/Login?ReturnUrl=%2flogging

注:帳號/ 登錄和NOT帳戶/ 登錄

AccountController.Login操作不存在。

的web.config有:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 

我當然可以實現登陸行動,並重定向到登錄。 我只是困惑,想知道爲什麼發生這種情況。

回答

25

搜索您的項目的登錄 - 它必須在某處指定。是否有任何其他web.config值覆蓋此(可能看着一個孩子的根目錄和正在使用父值) 也有任何重定向正在發生?您的機器的web.config中是否設置了默認值? 項目上的默認網址是否設置爲/ login?

安裝glimpse路由調試程序以查看哪個路由正在用於此頁面。

編輯: 多一點研究會產生一個已知問題。 看看這個鏈接: ASP.NET MVC issue with configuration of forms authentication section

Theres在mvc 3測試版中的錯誤 - 你運行測試位? 還要注意在上面的URL中提到的項目爲RTM位:

<add key="loginUrl" value="~/LogOn" /> 

還檢查了 http://forums.asp.net/p/1616153/4138366.aspx

EDIT 2

下面是關於從這個潛在來源堅實的評論@santiagoIT(請提供他的評論,如果具體的幫助你)

今天我發現了這個問題的根源:我有在'使用Razor語法的ASP.NET網頁'上添加'可部署的依賴關係'。這增加了對以下內容的引用:WebMatrix.Data.dll此程序集有一個具有靜態構造函數的類,它執行以下操作:static FormsAuthenticationSettings(){FormsAuthenticationSettings.LoginUrlKey =「loginUrl」; FormsAuthenticationSettings.DefaultLoginUrl =「〜/帳戶/登錄」;}解釋!

+0

我沒有搜索登錄,但沒有出現。我明天會嘗試你的建議。我正在使用wcf web api,這是我認爲不尋常的事情。 stilll非常不解... – santiagoIT

+0

看到編輯上面 –

+0

Thx!我向appSetting添加了並且它工作正常。 我當然希望我沒有運行mvc 3測試版。 我的System.Web.Mvc.dll顯示v3.0.0.0。這是測試版嗎? – santiagoIT

3

這個工作對我來說,我使用MVC 3

<appSettings> 
    <add key="loginUrl" value="~/Account/LogOn" /> 
</appSettings> 
<system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/LogOn" name=".ASPXFORMSAUTH" /> 
    </authentication> 
</system.web> 

而且我發現,(僅在調試過程中的配置)將followinf部分web配置有助於加快我調試爲有認證爲任何頁面。

<authorization> 
    <deny users="?" /> <!-- remove after debugging --> 
</authorization> 
1

我固定它這樣

1)進入加時賽IIS

2)選擇您的項目

3)點擊 「驗證」

4)單擊「匿名身份驗證「>編輯>選擇」應用程序池標識「而不是」特定用戶「。

5)完成。

2

只需簡單地刪除WebMatrix dll,如果它們存在於您部署的bin文件夾中。