成员身份CreateUser出错

时间:2012-10-14 11:43:12

标签: asp.net web-config roles membership

我正在以编程方式创建新用户(稍后将添加自定义配置文件)并正在使用Win2K8 VM:

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">

4 个答案:

答案 0 :(得分:1)

  

System.Data.SqlClient.SqlException:用户'IIS APPPOOL \ MYAPP'登录失败。

这表示您的应用程序池标识是虚拟帐户'IIS APPPOOL \ MYAPP'。

您需要为此标识创建一个SQL Server登录名,并将其添加为具有成员资格数据库相应权限的用户。

  

通过为“此身份”创建SQL Server登录信息,不确定您的意思......

一种方法是使用SQL Server Management Studio。将“对象资源管理器”连接到SQL Server实例,单击“安全/登录”右侧,选择“新建登录”,然后使用Windows身份验证添加登录名IIS APPPOOL \ MYAPP。

然后将此登录信息映射到成员资格数据库中的用户。

答案 1 :(得分:1)

您当前的连接字符串是:

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

这里的错误是你说的:连接到我的sql server数据库并使用App Pool身份作为'account'来验证我的sql server db。

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;
  2. 我添加了论据:uid=username;
  3. 我添加了论据:password=pass;
  4. 只需将值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>
    

    GL!

答案 2 :(得分:0)

检查你的连接字符串应该如下所示:

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

关于修改后的错误:

enableEventValidation 设置为false,将 viewStateEncryptionMode 设置为Never,如下所示:

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

答案 3 :(得分:0)

通过填充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" />