2016-02-19 85 views
1

..但我不是登錄控制器!未找到路徑「/ Account/Login」的控制器或未實施IController

我得到它時,我拋出自定義錯誤。

我的意思是......是的。我從一個有示例項目的示例項目開始我的項目,並刪除了帳戶控制器,其視圖,甚至任何引用「登錄」的代碼(甚至可能提及它的web.config中的任何條目),以及它出現這個錯誤。

我會在哪裏檢查?

更新:我正在使用Active Directory而不是登錄表單。

+1

檢查web.config。等一下!做一個解決方案級別搜索「登錄」 – Shyju

+0

試過。沒有運氣.. – Kevin

+0

清理你的解決方案。刪除臨時文件。重新啓動VS – Shyju

回答

1

好的。所以看起來我的問題是因爲我正在使用自定義[Authorize]屬性,並且我沒有登錄頁面,因此完全沒有。我正在使用Active Directory。

根據@Lars & @Shani,顯然我需要以某種方式指向一個。

不幸的是,我不能,因爲我沒有一個,它是沒有用的創建一個。所以我想出了一種適合我的情況的方法。在我的自定義屬性[Authorize],我返回RedirectToRouteResult那去我的自定義錯誤頁:

protected override void HandleUnauthorizedRequest(System.Web.Mvc.AuthorizationContext filterContext) 
    { 
     base.HandleUnauthorizedRequest(filterContext); 

     if (!_authorized) 
     { 
      filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new 
      { 
       controller = "ErrorPage", 
       action = "Unauthorized" 
      })); 
     } 
    } 

我敢肯定有幾種不同的方式來做到這一點,但是這是我與去此刻此刻..

+0

我很高興你解決了這個問題。這似乎是您使用AD登錄進行當前設置的一個很好的解決方案。 –

0

對@ Html.Action(「Login」,「AccountController」)進行全局搜索並刪除它。

可能有些視圖仍然引用AccountController中的Login方法。

1

只需添加到您的Web配置文件這些行:

<authentication mode="Forms"> 
    <forms loginUrl="~/home/Login" timeout="2880"></forms> 
</authentication> 

在loginUrl輸入正確的登錄頁面的目標,它會重定向所有標記的請求[授權]那裏,而不是賬戶/登錄。

0

檢查任何控制器類別或操作是否具有[Authorize]以上的屬性。

如果用戶請求某個動作的屬性存在,他們將被重定向到一個登錄頁面,如果他們還沒有登錄。但是如果你沒有登錄頁面(如果你不' t需要用戶登錄),那麼你不應該使用這個屬性。

+0

它如何知道登錄頁面重定向? – Kevin

+0

如果我沒有記錯,除非在web.config中輸入了另一個操作,否則MVC會自動重定向到「〜/ Account/Login /」。 –

+0

拉爾斯,你有沒有任何鏈接可能會給你一些重要的原因,如果我沒有登錄頁面,我不應該使用該屬性?我正在使用Active Directory。只是域中的某些用戶未被授權。我使用自定義的授權屬性將它們除去,如果它們不允許進入,則在AuthorizeCore中返回false。 – Kevin

相關問題