Visual studio 2010 mvc 4 simpleroleprovider在登录后提供松散的应用程序名称

Visual studio 2010 mvc 4 simpleroleprovider在登录后提供松散的应用程序名称,visual-studio-2010,asp.net-mvc-4,Visual Studio 2010,Asp.net Mvc 4,我正在使用VS10 ASP.NET MVC4.NET Framework 4创建一个应用程序。我为WEB ASP.NET MVC 4应用程序使用了VS10提供的模型。创建之后,没有对应用模型进行任何更改,我使用ASP.net管理工具创建成员和角色,一切都很顺利。我打算用 Roles.IsUserInRole 函数为特定用户组创建视图。但登录后,该功能不起作用,也不起作用 授权(角色:=“角色名称”) 应用于控制器中的特定功能。原因:我验证了ApplicationName在每个testuser登录

我正在使用VS10 ASP.NET MVC4.NET Framework 4创建一个应用程序。我为WEB ASP.NET MVC 4应用程序使用了VS10提供的模型。创建之后,没有对应用模型进行任何更改,我使用ASP.net管理工具创建成员和角色,一切都很顺利。我打算用

Roles.IsUserInRole

函数为特定用户组创建视图。但登录后,该功能不起作用,也不起作用

授权(角色:=“角色名称”)


应用于控制器中的特定功能。原因:我验证了ApplicationName在每个testuser登录后丢失(我不知道如何:尚未对源代码进行任何更改),SimpleRoleProvider不允许以编程方式修改当前ApplicationName值(引发特定异常)。在不更改角色提供程序的情况下是否可以克服此问题?

开箱即用,MVC4简单成员身份设置不正确。我在一个类似的问题上详述了这一点

你基本上需要做的是

1) 删除过滤器文件夹下的文件

2) 在应用程序_start()上初始化SimpleMembership。最佳位置是由global.asax调用的AuthConfig文件

3) 从帐户控制器中删除initialize simple membership属性


如果您查看上面链接中的公认解决方案,如果您需要,我会提供更多详细信息。

我想我已经找到了问题的解释。在MSDN中,在有关SimpleMembershipProvider类中ApplicationName属性的章节中,我发现了以下注释:

如果SimpleMembershipProvider类已通过调用WebSecurity.InitializeDatabaseConnection方法初始化,则不支持此属性,并将引发NotSupportedException异常。但是,如果未调用WebSecurity.InitializeDatabaseConnection方法,并且已将站点配置为使用标准ASP.NET成员资格提供程序,则此属性将传递给标准成员资格提供程序。有关更多信息,请参阅SimpleMembershipProvider类概述

起初我并不清楚。但经过多次测试,我想我已经不理解了。SimpleMebrShipProvider有一个强大但受限的目标,它在MVC4模板中的AccountController中的实现就是一个例子。它不考虑ApplicationName,因为它克服了这种必要性,但是,通过这种行为,它限制了对需要ApplicationName集的“角色”函数的访问。 为了证实我的假设和不理解,我删除了:

<InitializeSimpleMembership()> 

来自客户控制员。一切正常,我能够使用我需要的所有功能。我不得不改变控制器中的一些东西,因为我不能再使用WebMatrix了,但是改变并不是那么难。
如果有人对我的结论有任何意见,他/她会很高兴知道提出了什么异常?提出的异常是:不支持指定的方法您能在初始化简单成员身份的位置显示您的代码吗?还要说它在你的结构中的位置。默认情况下,有一个属性装饰accounts controller,但它应该移到global.asax。初始化简单成员资格的代码放在文件夹“Filters”中,这是模型提供的标准代码。我无法提供全部代码,这是你的问题。我将发布一个小的解决方案。再次感谢。我将很快尝试并向您报告结果我尝试了您建议的解决方案,但当我应用简单的更改时,在我的情况下使用autocreatetable=True,我获得了异常“无法打开所需的数据库。Access未成功…”。使用具有InitializeSimpleMembershipAttribute的原始源代码,问题不会出现。有什么建议吗?ThanksI稍微修改了您的建议,在global.asax末尾SimpleMembershipProvider启动后应用更改。情况发生了变化,ApplicationName立即丢失。所以我认为这可能取决于machine.config。是可能的还是你有更好的想法?thanksI得出的结论是没有解决方案,并继续禁用SimpleMembership。这需要对标准模板进行一些更改,因为WebMatrix不能再使用了,但这不是一项艰苦的工作。我不认为simplemembership有错,我在几个MVC项目中使用了它,没有这个错误。我的结论是,有些东西在别处被编辑过,无法提供太多帮助,因为我不知道是什么。很高兴你通过了考试!