在我们的应用程序中,我们使用asp.net成员资格数据库进行用户和角色管理。我们在现有的SQL Express数据库中安装了数据库表,一切正常。
在开发过程中,我们需要存储一个有关用户的其他信息,即:FullName
为此,我们在web.config中创建了一个配置文件,如下所示:
<profile enabled="true">
<properties>
<add name="FullName" type="string"/>
</properties>
</profile>
它也有效,我们能够轻松地添加和检索用户的全名..但令我们惊讶的是,我们发现数据库中的配置文件表是空的......经过进一步调查,我们发现配置文件信息是没有保存在我们的常规sqlexpress数据库中但是在app-code文件夹中的新aspnetdb.mdf中保存了..
现在每当我们创建一个新用户时,它都会在两个数据库中创建,但配置文件信息(即:全名)仅保存在aspnetdb.mdf中
有人可以回答为什么会发生这种情况...... ??
以下是我们的Web配置片段,其中我们明确指定需要使用我们自己的数据库,而不是默认的sqlmembershipprovider
<membership defaultProvider="CustomizedMembershipProvider">
<providers>
<clear/>
<add name="CustomizedMembershipProvider"
connectionStringName="MyConnectionString"
applicationName="App209"
commandTimeout="60"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="true"
enablePasswordRetrieval="true"
enablePasswordReset="true"
passwordFormat="Encrypted"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="4"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</membership>
<roleManager enabled="true"
defaultProvider="CustomizedRoleProvider">
<providers>
<add name="CustomizedRoleProvider"
connectionStringName="MyConnectionString"
applicationName="App209"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</roleManager>
有任何帮助吗? 提前致谢
答案 0 :(得分:0)
您必须将配置文件提供程序配置为使用与其他两个提供程序相同的连接字符串。
<profile defaultProvider="CustomizedProfileProvider" >
<providers>
<clear/>
<add name="CustomizedProfileProvider" connectionStringName="MyConnectionString" applicationName="App209" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</profile>