7

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

测试.aspx:

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

网络配置:

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

这输出:

错误的

这是预期的。

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

真的

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

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

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

4

2 回答 2

1

可以打开简单成员资格的关键是 AppSetting enableSimpleMembership(默认为true?)。

显然,当 MVC 项目启动时,例程会检查此设置是否设置为false. 如果不是,SimpleMembershipProvider则应用 - 或 ASP.NET 尝试 - 以某种方式这样

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

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

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

要为 ASP.NET 网页网站使用 SimpleMembershipProvider 和 WebSecurity 类,请在 Web.config 文件的 appSetting 部分中将enableSimpleMembership设置为 true。(或者,将 enableSimpleMembership保留在 Web.config 文件之外,因为 enableSimpleMembership默认为 true。)启用简单成员资格后,SimpleMembershipProvider 将替换 SqlMembershipProvider,但在通过调用 InitializeDatabaseConnection() 方法对其进行初始化之前不会调用它。

于 2013-08-12T08:46:35.977 回答
0

尝试设置此键。基本上 simplemembership 正在打开,这就是启用角色的原因

于 2012-09-16T20:46:05.723 回答