即使roleManger.enabled设置为false,Roles.Enabled也为true

时间:2012-09-13 08:31:53

标签: c# asp.net .net asp.net-mvc asp.net-membership

我有一个简单的网站,其中一个aspx页面(Test.aspx)显示Roles.Enabled值,Web.config(属性roleManager@enabled)设置为false。

Test.aspx文件:

<%@ Page Language="C#" %>
<%= Roles.Enabled %>

的Web.config:

<?xml version="1.0"?>
<configuration>
    <system.web>
      <roleManager enabled="false" />
    </system.web>
</configuration>

输出:

  

预期。

然而,当我添加另一个文件(剃刀页面)时,例如内部没有内容的Test.cshtml(0 B),aspx页面突然输出:

  

即使从网站上删除了剃刀页面,输出也不会改变。我必须回收应用程序池,然后再次输出False(预期结果)。

似乎 MVC 模块/处理程序工厂因某些未知原因而更改了值。

如何告诉 MVC 运行时不要这样做?

2 个答案:

答案 0 :(得分:1)

可以打开简单会员资格的密钥是AppSetting enableSimpleMembership(默认为true?)。

显然,当MVC项目启动时,例程会检查此设置是否设置为false。如果没有应用SimpleMembershipProvider - 或者ASP.NET试图以某种方式like this

要禁用此行为,请将其设置为false

<appSettings>
  <add key="enableSimpleMembership" value="false" />
</appSettings>

我在WebMatrix的PreApplicationStartCode中找到了这句话。我猜大多数MVC版本都有类似的行为。

  

使用SimpleMembershipProvider和WebSecurity类   ASP.NET网页网站,将 enableSimpleMembership 设置为true   Web.config文件的appSetting部分。 (或者,离开    enableSimpleMembership 超出Web.config文件,因为    enableSimpleMembership 默认为true。)简单成员资格时   启用后,SimpleMembershipProvider将替换SqlMembershipProvider,但是   直到通过调用初始化它才被调用   InitializeDatabaseConnection()方法。

答案 1 :(得分:0)

尝试设置此键。基本上简单的成员关系正在启用,这就是启用角色的原因