asp.net 成员资格创建用户出错

g52tjvyc  于 2023-03-13  发布在  .NET
关注(0)|答案(4)|浏览(151)

我正在以编程方式创建一个新用户(稍后将添加自定义配置文件),并且正在使用Win2K8虚拟机:

MembershipUser newUser = 
    Membership.CreateUser(userNameTxt.Text, passwordTxt.Text, emailTxt.Text);
Roles.AddUserToRole(userNameTxt.Text.Trim(), "Member");

更新日期:

连接字符串:

<remove name="LocalSqlServer" />
<add name="LocalSqlServer" 
    connectionString="Initial Catalog=MYS;Data Source=WIN2K8;uid=MYS;password=xxxxxx;"   
    providerName="System.Data.SqlClient" />

获取以下错误:
System.Data.SqlClient.SqlException:用户“IIS APPPOOL\MYAPP”登录失败。

<membership>
      <providers>
        <remove name="DefaultMembershipProvider"/>
        <add 
            name="DefaultMembershipProvider" 
            type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
            connectionStringName="LocalSqlServer" 
            enablePasswordRetrieval="false" 
            enablePasswordReset="false" 
            requiresQuestionAndAnswer="false" 
            requiresUniqueEmail="false" 
            minRequiredPasswordLength="6" 
            minRequiredNonalphanumericCharacters="1" 
            passwordAttemptWindow="10" 
            applicationName="/" />
            </providers>
    </membership>
    <roleManager enabled="true">
soat7uwm

soat7uwm1#

您当前的连接字符串是:

<connectionStrings>
    <remove name="LocalSqlServer" />
    <add name="LocalSqlServer" 
    connectionString="Initial Catalog=MYS;Data Source=WIN2K8;Integrated Security=SSPI;"
    providerName="System.Data.SqlClient" />
</connectionStrings>

这里的错误在于你说:* 连接到我的SQL Server数据库,并使用应用程序池标识作为“帐户”来验证我的SQL Server数据库。*
IIS上的所有网站都在一个“帐户”下运行。在本例中,此帐户似乎名为MyApp
因此,修复需要有一个连接字符串,该字符串表示:不要使用IIS机器上设置的任何“身份”,等等。但是!使用这个硬编码的用户名/密码代替。
现在就来看看这个:

<connectionStrings>
    <remove name="LocalSqlServer" />
    <add name="LocalSqlServer" 
    connectionString="Initial Catalog=MYS;Data Source=WIN2K8;uid=username;password=pass;"
    providerName="System.Data.SqlClient" />
</connectionStrings>

请注意:
1.我去掉了这个论证:Integrated Security=SSPI;
1.我补充了一个论点:uid=username;
1.我补充了一个论点:password=pass;
只需将值usernamepass替换为用于登录SQL Server数据库的用户名/密码。
需要帮助了解在单个连接字符串中可以定义哪些选项/关键字?Check this ConnectionStrings site as a reference
专业提示:不要使用<remove name="whatever/>..尝试使用<clear/>
例如

<connectionStrings>
    <clear/>
    <add name="LocalSqlServer" connectionString="Initial Catalog=MYS;Data Source=WIN2K8;uid=username;password=pass;" providerName="System.Data.SqlClient" />
</connectionStrings>
ego6inou

ego6inou2#

System.Data.SqlClient.SqlException:用户“IIS APPPOOL\MYAPP”登录失败。
这表明您的应用程序池标识是虚拟帐户“IIS APPPOOL\MYAPP”。
您需要为此标识创建SQL Server登录名,并将其作为具有适当权限的用户添加到成员资格数据库。
不确定为“此身份”创建SQL Server登录名是什么意思...
一种方法是使用SQL Server Management Studio。将“对象资源管理器”连接到SQL Server示例,右键单击“安全/登录”,选择“新建登录”,然后添加具有Windows身份验证的登录名IIS APPPOOL\MYAPP。
然后将此登录名Map到成员资格数据库中的用户。

tv6aics1

tv6aics13#

检查连接字符串,它应该如下所示:

Server=.\SQLEXPRESS;Database=MyDatabase;Integrated Security=SSPI;

关于您修改的错误:
启用事件验证设置为假,将视图状态加密模式设置为从不,如下所示:

<pages enableeventvalidation="false" viewstateencryptionmode="Never">
c90pui9n

c90pui9n4#

我能够通过填充aspnet_SchemaVersions表来解决连接问题,请参见以下链接:
ASP.NET Membership Error
然后,我能够本地连接,因此:

<remove name="LocalSqlServer" />
    <add name="LocalSqlServer" 
    connectionString="Initial Catalog=MYS;Data Source=WIN2K8;Integrated Security=SSPI;"
    providerName="System.Data.SqlClient" />

相关问题