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 データベースに保存されず、2 回目にはユーザー名が既に存在すると表示されます。つまり、私のユーザー名は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>

受け取ったエラー -

説明: この要求を処理するために必要な構成ファイルの処理中にエラーが発生しました。以下の特定のエラーの詳細を確認し、構成ファイルを適切に変更してください。

パーサー エラー メッセージ: 既定のメンバーシップ プロバイダーが見つかりませんでした。

編集された質問

問題は、ユーザーがそのフォームを介してユーザー名と pwd を追加し、データがデータベースに保存されない場合、フォームが同じユーザー名を再度追加できないのはなぜですか?

4

1 に答える 1

2

OK、いくつかのこと:

  • App_Dataデータベースではなく、既知の ASP.NETフォルダーです。
  • 既定では、ASP.NET メンバーシップ プロバイダーは SQL Server ExpressASPNETDB.MDFデータ ファイルをそのフォルダーに配置し、そこから使用します。

したがって、削除などの必要はありませんApp_Data。ASP.NET メンバーシップ システムに独自の SQL Server データベースを使用するように指示するだけです。

独自のデータベースに ASP.NET メンバーシップ テーブルを配置するには、次のことを行う必要があります。

  1. .NET フォルダーにあるユーティリティを実行しaspnet_regsqlます (通常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>

そして、ほとんどの場合、独自のデータベース用に独自の接続文字列が既にいくつかあります。

したがって、接続文字列を使用する<membership>ように ASP.NETタグを変更するだけです。

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