【问题标题】:Error with Membership CreateUser成员资格 CreateUser 错误
【发布时间】:2012-10-04 14:46:21
【问题描述】:

我正在以编程方式创建一个新用户(稍后将添加自定义配置文件)并且正在使用 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">

【问题讨论】:

  • 想查看您的连接字符串。当您使用集成安全性时,有时会发生这种情况。你试过在连接字符串中使用用户名、密码吗?
  • 不,我没有。我在问题中添加了连接字符串。
  • 您能否尝试不提供集成安全性并提供用户名密码? (sql登录)

标签: asp.net web-config roles membership


【解决方案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 身份作为“帐户”来验证我的 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;

只需将值 usernamepass 替换为您用于登录 sql server 数据库的用户名/密码。

需要帮助了解您可以在单个连接字符串中定义哪些选项/关键字? Check this ConnectionStrings site as a reference.

专业提示:不要使用&lt;remove name="whatever/&gt; .. 尝试使用&lt;clear/&gt;

例如。

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

GL!

【讨论】:

  • 当我添加 我得到:在应用程序配置中找不到连接名称“LocalSqlServer”或连接字符串为空。
  • le sigh ...请注意..&lt;clear/&gt;必须在&lt;add ..&gt;之前出现。为什么?这说:摆脱 - 任何和所有 - 的默认连接字符串......现在添加我自己的。我会称它为LocalSqlServer
  • 我用它代替了添加之前的旧删除...无论如何可能只是一个附带问题。
  • 如果不起作用,请不要使用 Pro 提示。其次,检查&lt;add&gt; 的拼写。确保name=XXXconnectionstringsmembership provider 中使用的完全一致。
  • 让这种连接格式可以在我的服务器上工作(但不能在我的本地 WIN2K8 VM 上)。感谢您的所有帮助!
【解决方案2】:

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

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

您需要为此身份创建一个 SQL Server 登录名,并将其作为具有适当权限的用户添加到 Membership 数据库。

不确定为“此身份”创建 SQL Server 登录名是什么意思...

一种方法是使用 SQL Server Management Studio。将“对象资源管理器”连接到您的 SQL Server 实例,右键单击“安全/登录”,选择“新建登录”并添加登录名 IIS APPPOOL\MYAPP with Windows Authentication。

然后将此登录名映射到 Membership 数据库中的用户。

【讨论】:

  • 不确定为“此身份”创建 SQL Server 登录名是什么意思 - 添加与我的应用同名的 DB 用户?
【解决方案3】:

检查您的连接字符串,它应该如图所示:

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

关于您修改后的错误:

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

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

【讨论】:

【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多