1

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

4 回答 4

1

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 数据库中的用户。

于 2012-10-14T12:56:54.280 回答
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;

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

需要帮助了解您可以在单个连接字符串中定义哪些选项/关键字?检查此 ConnectionStrings 站点作为参考

专业提示:而不是<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!

于 2012-10-14T13:35:33.390 回答
0

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

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

关于您修改的错误:

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

<pages enableeventvalidation="false" viewstateencryptionmode="Never">
于 2012-10-14T12:25:25.850 回答
0

根据此链接,我能够通过填充 aspnet_SchemaVersions 表来解决连接问题:

ASP.NET 成员资格错误

然后我能够在本地连接:

<remove name="LocalSqlServer" />
    <add name="LocalSqlServer" 
    connectionString="Initial Catalog=MYS;Data Source=WIN2K8;Integrated Security=SSPI;"
    providerName="System.Data.SqlClient" />
于 2012-10-14T22:01:18.710 回答