1


1)デフォルトでは、構成要素にはconnectionStringName属性がLocalSqlServerに設定されており、私の知る限り、この属性はで定義された接続を参照しますmachine.configファイル の要素。

a) この接続文字列はデータベースaspnetdb.mdfを参照していると思いますか?!

b) aspnetdb.mdfは、( aspnet_regsqlを呼び出して) メンバーシップ データベースまたはプロファイル データベースを手動で作成しない場合に使用されることは理解していますが、 connectionStringName属性がLocalSqlServerに設定されている構成要素の目的はまだわかりません。つまり、いつ、なぜこのデータベースにアクセスする必要があるのでしょうか?

c) aspnet_regsqlを使用してメンバーシップ データベースを手動で設定し、 aspnetdb.mdfを使用しないとどうなりますか? 構成要素は、 aspnetdb.mdfを使用していないことをどのように認識し、代わりに作成したデータベースにアクセスしようとしますか?


2) machine.configのLocalSqlServerエントリが他のデータベース ファイルを指すようにする場合は、次のようにします。

      <connectionStrings>
        <remove name="LocalSqlServer" />
        <add name=”LocalSqlServer” ...  />
      </connectionStrings>

elementの目的は、以前に宣言された同じ名前の要素をキャンセルすることだと理解しています <remove>が、上記の例では、既存の接続の属性を変更しただけなので、machine.configには同じ名前の 2 つの接続がありません。<remove>要素を含める必要がありましたか?


ありがとう

4

2 に答える 2

2

MSDNの connectionStrings 要素の記事から:

子構成ファイルで clear 要素が使用されていない限り、親構成ファイルに含まれる接続文字列は継承されます。次の既定の connectionStrings 要素は、Machine.config ファイルで構成されます。コードをコピー

<connectionStrings>
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated
        Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User
        Instance=true" providerName="System.Data.SqlClient" />
</connectionStrings>

そのため、構成ファイルのそのセクションが変更されていない場合、自動的にその接続文字列が設定されます。

于 2009-06-20T21:47:37.963 に答える
1

使用された規則は、同じタスクを達成するために選択された可能性のある多くの規則の 1 つですが、当時 MS の ASP.NET チームに所属していた人々だけが、その一連の規則が「なぜ」なのかを言うことができます。使用済み。私の理解では、現在の構成の目的は、初心者ができるだけ簡単に始められるようにすることです。つまり、いくつかのウィザードを実行し、事前に構成された設定でデータベースを自動的に生成し、いくつかのセキュリティ コントロールをドラッグ アンド ドロップするだけで、何かを操作できます。これは初心者向けに設計されているため、経験豊富な開発者は、ピースがどのように組み合わされるかを掘り下げるのが簡単ではないため、現在抱えているのと同じ一連の質問に直面します。

machine.config で気付くことの 1 つは、すべてのプロバイダー (メンバーシップ、ロール、プロファイルなど) がこの LocalSqlServer 接続文字列名を使用していることです。これも初心者のシナリオをサポートしています。したがって、独自のデータベースを使用するには、LocalSqlServer の既定の定義を削除して、独自のデータベースを定義する必要があります。構成ファイル定義には置換要素がないため、論理的に同等の削除/追加シーケンスを使用する必要があります。接続文字列を変更し、その名前を LocalSqlServer のままにすると、machine.config 内のすべてのプロバイダーが DB を指すようになります。これにより、データベースの既定のプロバイダー定義が得られます。

ここで、プロバイダーの定義をカスタマイズする場合は、それらを独自の Web.config に追加して、その設定を変更できます。その時点で、LocalSqlServer をカスタム プロバイダー定義の接続文字列としてそのままにしておくか、独自の接続文字列を作成してから、独自の接続文字列でカスタム プロバイダー定義を指定すると、LocalSqlServer について心配する必要がなくなります。Web.config から LocalSqlServer を削除する場合は、データベース文字列を参照する独自の web.config にカスタム プロバイダー定義を追加する必要があります。

お役に立てれば、

ジョー

于 2009-06-20T21:05:08.707 に答える