私の web.config ファイルには、ローカル用とライブ用の 2 つの SQL Server 接続文字列があります。
<connectionStrings>
<remove name="LocalSqlServer" />
<add name="LocalSqlServer" connectionString="[removed]" providerName="System.Data.SqlClient"/>
<add name="LiveSqlServer" connectionString="[removed]" providerName="System.Data.SqlClient"/>
</connectionStrings>
次に、「localhost」またはライブサーバーでサイトを実行しているかどうかに応じて、基本的に接続文字列を設定する「utils」シングルトンクラスがあります。
if (Environment.MachineName.ToUpper() == MyOwnConfig.GetAppSettingsValue(ConfigKeys.localhost).ToUpper()) {
this.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString();
//MembershipProvider provider = Membership.Providers["LocalAspNetMemberSqlProvider"];
//RoleProvider role = Roles.Providers["LocalAspNetMemberSqlProvider"];
}
else {
this.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["LiveSqlServer"].ToString();
//MembershipProvider provider = Membership.Providers["LiveAspNetMemberSqlProvider"];
//RoleProvider role = Roles.Providers["LiveAspNetMemberSqlProvider"];
}
データベース クラスは、utils クラスの connectionString プロパティを使用するだけです。これはすべて正常に機能するため、サイトをローカルに配置すると、構成ファイルの接続文字列などを変更せずにライブにアップロードするだけで、ライブ データベースの使用が開始されます。
現在、私は自分のサイトに「メンバーシップ」を実装しており、いくつかの webmethods を使用するための ajax のために、現在ログインしているユーザーのテキスト フィールドに providerUserKey を保存しています。私の Web メソッドは、このキーが認証されていることを確認します。例えば
ajaxCreds.ajaxID1 = ((MembershipUser)Membership.GetUser()).ProviderUserKey.ToString();
質問: 質問は、このメンバーシップが LIVE データベースからのものか、ローカル データベースからのものかをどのように知ることができるかということです。メンバーシップ/プロバイダーの行に追加した (コメント アウトされた) Web 構成からわかるように、上記の Membership.getUser() コマンドでそれらを使用する方法がわかりません。
代替手段...これは良い方法ですか?または、ライブにアップロードするときに web.config ファイルを編集する方が簡単ですか?
どうもありがとう