2013-04-13 2 views
0

У меня есть веб-сайт, где настроен:asp.net MVC: отключено RoleManager все еще выполняется

<roleManager enabled='false'></roleManager> 

Но я до сих пор можно увидеть roleManager выполняется в трубопроводе (глядя на следы, и я получаю исключение, когда roleManager пытается загрузить роли из поставщиков SQL, настроенных в machine.config)

Как отключить RoleManager?

ответ

2

затруднительного

добавить enableSimpleMembership со значением параметра ложного приложения к вашему web.config.

причиной

<roleManager enabled="false" /> 

заставит Roles.Enabled флаг должен быть установлен в ложь, как и ожидалось,

но есть WebMatrix.WebData.WebSecurity, который говорит:

internal static void PreAppStartInit() 
{ 
    if (!ConfigUtil.SimpleMembershipEnabled) 
    return; 
    ... 
    Roles.Enabled = true; 
    ... 
} 

это переопределяет параметр roleManager (этот код выполняется до того, как модуль RoleManager).

отключить SimpleMembership вы можете добавить настройки enableSimpleMembership приложение с value="false" (web.config):

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
    <appSettings> 
     <add key="enableSimpleMembership" value="false" /> 
    </appSettings> 
</configuration> 

это предотвратит WebMatrix от включения RoleManager.

Другое решение (хак), чтобы удалить модуль RoleManager из списка модулей:

.... 
<system.webServer> 
    <modules> 
     <remove name="RoleManager"/> 
    </modules> 
.... 
+0

<добавить ключ = "enableSimpleMembership" значение = "ложь" /> спас день. –

0

нет ... Я не думаю, что это правильно, даже с enableSimpleMembership = ложным, вы все равно нужно для реализации Dummy RoleProvider, иначе исключение «Функция« Менеджер роли »не была включена».

Вот как реализовать фиктивный RoleProvider:

Turning off only the Role Provider in SimpleMembership

Смежные вопросы