2013-06-06 142 views
0

我創建了一個應用程序,使用VS10 ASP.NET MVC4 .NET Framework 4.我使用VS10爲WEB ASP.NET MVC 4應用程序提供了模型。創建完成後,如果不改變應用模型,我使用ASP.net管理工具創建成員和角色,一切都很順利。我打算用mvc 4 simpleroleprovider鬆散登錄後的ApplicationName

Roles.IsUserInRole

功能,泰勒的觀點爲特定用戶羣。但登錄後,該功能不起作用,也不適用

授權(角色:=「角色名」)適用於特定功能的控制器

。原因:在每個testuser登錄後我都證實應用程序名稱已丟失(我不知道如何:尚未對源進行任何更改),並且SimpleRoleProvider不允許以編程方式修改當前的ApplicationName值(引發了特定的異常)。是否可以在不更改角色提供者的情況下解決此問題?

+0

有什麼異常提出? – James

+0

引發的異常是:不支持指定方法 –

+0

您可以在初始化簡單成員資格的位置顯示代碼嗎?還要說明它在你的結構中的位置。默認情況下有一個屬性裝飾帳戶控制器,但它應該移到global.asax。 – James

回答

0

開箱即用,MVC4簡單成員身份設置不正確。我詳細這在類似的問題here

什麼你基本上需要做的是

1)過濾器文件夾下刪除文件。

2)在application_start()上初始化SimpleMembership。最好的地方是在由Global.asax的

3調用)刪除AuthConfig文件從賬戶控制器初始化簡單會員屬性

如果你看看上面的鏈接接受的解決方案,我給若更詳細一點你需要它。

+0

再次感謝。我會很快嘗試,並會報告你的結果 –

+0

我嘗試了你建議的解決方案,但是當我應用簡單的更改時,在我的情況下采用autocreatetable = True,我得到了「無法打開所需數據庫的異常。 ..「。使用原始源代碼和InitializeSimpleMembershipAttribute,問題不會出現。任何建議?謝謝 –

+0

我稍微修改了你的建議,在SimpleMembeshipProvider啓動後應用更改,在global.asax結尾。情況發生了變化,ApplicationName立即丟失。所以我認爲這可能取決於machine.config。這是可能的,或者你有更好的想法?謝謝 –

0

我認爲找到了解決我的問題。在MSDN,關於SimpleMembershipProvider類ApplicationName屬性的章節中,我發現這樣一個字條:

如果SimpleMembershipProvider類一直使用到WebSecurity.InitializeDatabaseConnection方法的調用初始化,不支持此屬性,將引發NotSupportedException例外。但是,如果尚未調用WebSecurity.InitializeDatabaseConnection方法,並且已將站點配置爲使用標準ASP.NET成員資格提供程序,則該屬性將傳遞給標準成員資格提供程序。有關更多信息,請參閱SimpleMembershipProvider類概述。

最初對我而言並不清楚。但經過多次測試後,我認爲有不滿情緒。 SimpleMemershipProvider有一個功能強大但是容易實現的目標,並且它在MVC 4模板中的帳戶控制器中的實現就是一個例子。它不關心ApplicationName,因爲它支持這種必要性,但是,通過這種行爲,它限制了對需要設置ApplicationName的「角色」功能的訪問。 爲了證實我的假設和說明的undestanding,我刪除:

<InitializeSimpleMembership()> 

從賬戶控制器。一切順利,我能夠使用我需要的所有功能。我不得不改變控制器中的某些東西,因爲我再也不能使用WebMatrix了,但改變並不那麼困難。 如果有人對我的結論有任何評論,他/她會很好