0

我真的很抱歉,这可能是真正的初级问题,但我是 asp.net 的新手,我搜索了很多,但找不到适合我的问题的解决方案。

我的问题是:我想将我的用户注册数据保存到 SQL Server 数据库中,并在创建用户按钮中编写了以下代码:

protected void RegisterUser_CreatedUser(object sender, EventArgs e)
{
   UserDTO user = new UserDTO();
   user.userName = RegisterUser.UserName;
   user.password = RegisterUser.Password;
   user.userType = "User";

   string continueUrl = RegisterUser.ContinueDestinationPageUrl;

   if (user.addUser())
   {
       continueUrl = "~/";
   }

   Response.Redirect(continueUrl);
}

addUser()我创建一个连接并尝试保存它们。但我发现在项目中有一个内置数据库,名为App_Data. 所以即使数据也没有保存到我的 SQL Server 数据库中,第二次它说用户名已经存在。这意味着我的用户名保存在App_Data数据库中。

我的问题是:

  1. 我怎样才能删除这个App_Data
  2. 我可以看看这个App_Data表结构吗?
  3. 或任何建议使用此用户控件将数据保存到 SQL Server 数据库中?

编辑: 我的配置文件如下:

  <configSections>
    <section name="DatabaseFactoryConfiguration" type="PatientMgt_DataLayer.DatabaseFactorySectionHandler, PatientMgt_DataLayer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
  </configSections>

  <connectionStrings>
    <clear/>
    <add name="MyConnection1" providerName="MSSQL" connectionString="Data Source=pqr;Initial Catalog=HospitalMgt;User Id=sa;Password=abc" />
  </connectionStrings>

  <DatabaseFactoryConfiguration Name="PatientMgt_DataLayer.MsSqlDatabase" ConnectionStringName="MyConnection1"/>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />

    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>

    <membership defaultProvider="AspNetSqlMembershipProvider">
      <providers>
        <clear/>
        <add name="MyConnection1" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MyConnection1"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="/" />

      </providers>
    </membership>

我收到的错误 -

说明:处理服务此请求所需的配置文件期间发生错误。请查看下面的具体错误详细信息并适当地修改您的配置文件。

解析器错误消息:找不到默认成员资格提供程序。

已编辑的问题

问题是当用户通过该表单添加用户名和密码时,如果数据没有保存到数据库,为什么表单不允许再次添加相同的用户名?

4

1 回答 1

2

好的,有几件事:

  • App_Data是一个众所周知的 ASP.NET文件夹- 而不是数据库。
  • 默认情况下,ASP.NET 成员资格提供程序会将其 SQL Server ExpressASPNETDB.MDF数据文件放入该文件夹,并从那里使用它

所以你不需要删除App_Data或类似的东西——你只需要告诉 ASP.NET 成员系统使用你自己的 SQL Server 数据库。

要在您自己的数据库中拥有 ASP.NET 成员表,您需要:

  1. 执行aspnet_regsql在您的 .NET 文件夹中找到的实用程序(通常类似于C:\Windows\Microsoft.NET\Framework\v4.0.30319\或您正在使用的任何版本的 .NET 框架);运行该应用程序,您将获得一个对话框,指导您将 ASP.NET 成员资格安装到您自己的数据库中。

  2. 那么您需要修改您的web.config以确保 ASP.NET 会员系统使用您的数据库,而不是默认的 SQL Server Express。

当您创建标准 ASP.NET 应用程序时,您的 web.config 中可能有类似的内容:

<connectionStrings>
    <add name="ApplicationServices" 
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
   <membership defaultProvider="AspNetSqlMembershipProvider">
      <providers>
         <clear />
         <add name="AspNetSqlMembershipProvider" 
              type="System.Web.Security.SqlMembershipProvider" 
              connectionStringName="ApplicationServices" 
              enablePasswordRetrieval="false" enablePasswordReset="true" 
              requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
              maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" 
              minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
              applicationName="/" />
      </providers>
   </membership>

最有可能的是,您已经有一些自己的连接字符串,用于您自己的数据库 - 对吧?

因此,您只需更改 ASP.NET<membership>标记即可使用您的连接字符串!

<system.web>
   <membership>
      <providers>
         <clear />
         <add name="PutYourDefaultDatabaseConnectionStringNameHere"  <<=== CHANGE THIS!
              type="System.Web.Security.SqlMembershipProvider" 
              ....... />
      </providers>
   </membership>
于 2013-02-11T18:14:48.660 回答