我有一个简单的网站,其中一个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 运行时不要这样做?
答案 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)
尝试设置此键。基本上简单的成员关系正在启用,这就是启用角色的原因