我在VS2012中创建了一个新的WebSite - 不是项目 - 添加了连接字符串,创建了表,然后使用ASPNET CONFIGURATION创建了几个角色和一个用户,后者又自动在我的数据库中创建了适当的表:用户,UsersInRoles,角色,会员和ROLES。几乎按预期工作。使用4.5(SimpleMembershipProvider)时,它不会创建所有存储过程,并且旧的MemberShipProvider会使用额外的代码。
我想在Profile提供程序中添加一些字段,就像我使用MembershipProvider:
<properties> <add name="myWhatEver" type="System.Int32" allowAnonymous="false"/> </properties>
但是当我尝试调用代码时,它说“配置文件”不存在。所以我在网上搜索并用VS2012阅读,如果你创建一个网站,而不是一个项目,默认情况下它没有配置文件,所以你必须创建一个自定义的。
之后我在AppCode cs中添加了以下代码:
命名空间myNameSpace {
public class UserProfile : ProfileBase { public static UserProfile GetUserProfile(string username) { return Create(username) as UserProfile; } public static UserProfile GetUserProfile() { return Create(Membership.GetUser().UserName) as UserProfile; } [SettingsAllowAnonymous(false)] public string myWhatEver1 { get { return base["myWhatEver1"] as string; } set { base["myWhatEver1"] = value; } } }
在WebConfig中:
<profile defaultProvider="MYProfileProvider" inherits="myNameSpace.UserProfile">
<providers>
<clear />
<add name="MYProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="MYDBConn"/>
</providers>
</profile>
<membership defaultProvider="MYMembershipProvider">
<providers>
<clear />
<add name="MYMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="MYDBConn" applicationName="/"/>
</providers>
</membership>
<roleManager defaultProvider="MYRoleProvider">
<providers>
<clear />
<add name="MYRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="MYDBConn" applicationName="/"/>
</providers>
</roleManager>
我转到页面后面,它识别我的自定义配置文件!我已退出,直到我运行页面并获得此信息:
现在怎样?非常确定SimpleMembershiProvider不使用MembershipProvider使用的存储过程,我真的不想在数据库中安装MembershipProvider。必须有一些我可以添加到我的代码中的东西,所以它按原样运行。
有什么建议吗?
感谢。
答案 0 :(得分:0)
您的web.config配置为使用默认提供程序而不是SimpleMembership提供程序。您的web.config看起来像这样使用SimpleMembership。
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
<providers>
<clear/>
<add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
</providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear/>
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
</providers>
</membership>
SimpleMembership提供程序不会尝试调用默认提供程序使用的存储过程。
此外,使用SimpleMembership时,无法使用ASP.NET配置创建用户和角色。您必须创建自己的应用程序才能执行此操作,或在数据库创建为described in this article时为其设置种子。本文以及Internet上的大多数其他文章都是为了将SimpleMembership与MVC结合使用,而不是使用Web表单。但正如this QA指出它应该适用于Web窗体。