我在 VS2012 中创建了一个新网站 - 不是一个项目 - 添加了连接字符串,创建了表,然后使用 ASPNET CONFIGURATION 创建了几个角色和一个用户,这反过来又自动在我的数据库中创建了相应的表:用户、UsersInRoles、角色、成员资格和角色。几乎按预期工作。对于 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>
我转到后面的页面,它会识别我的自定义配置文件!我都退出了,直到我运行页面并得到这个:
找不到存储过程“dbo.aspnet_CheckSchemaVersion”。
怎么办?很确定 SimpleMembershiProvider 不使用像 MembershipProvider 这样的存储过程,我真的不想在数据库中安装 MembershipProvider。必须有一些东西我可以添加到我的代码中,这样它才能按原样工作。
有什么建议么??
谢谢。