私は単一のスキーマを持つODATAサービスを持っています。これらは開発データベースを指し、WCFデータサービスを介して提供され、Excel/Powerpivotを実行しているクライアントがレポートなどのために独自のデータを取得するために使用されます。基本データを使用するOData/WCFデータサービスの実行時の接続文字列の変更
サービスがほとんど同じ基本認証を通じて実行時に確保されているが、ここで説明:http://msdn.microsoft.com/en-us/data/gg192997
をこれは、サーバー上に座ると、ユーザー名に基づいて、異なるデータベースに接続されたライブ環境で作業する必要が今どのように/パスワードが入力されました。ユーザーは「username @ clientID」と「password」と入力します。 'username @ clientID'はsplit()され、username/passwordはSQLデータベースに対してチェックされます。ただし、照合するデータベースサーバーのURLはClientIDによって決まります。
また、WCFデータサービスが承認されると、ClientIDに対応するデータベースからデータを返す必要があります。
私が試みたアプローチは、web.configファイルの接続文字列を変更することでしたが、ファイルが読み取り専用であるため、これは機能しません。これが全然うまくいくかどうかはわかりません。私がする必要があるのは、EDMX/WCFデータサービスが正しいデータベースからデータを返すようにすることです。あなたのDataService派生クラスがCreateDataSourceメソッドをオーバーライド
private static bool TryAuthenticate(string user, string password, out IPrincipal principal)
{
Configuration myWebConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
myWebConfig.AppSettings.Settings["test"].Value = "Hello";
myWebConfig.Save();
string newConnStr = myWebConfig.ConnectionStrings.ConnectionStrings["IntelCorpEntities"].ToString();
newConnStr.ToString().Replace("SERGEIX01", "SERVERX01");
myWebConfig.ConnectionStrings.ConnectionStrings["IntelCorpEntities"].ConnectionString = newConnStr;
myWebConfig.Save();
if (user.ToLower().Equals("admin") && password.Equals("password"))
{
principal = new GenericPrincipal(new GenericIdentity(user), new string[] { "Users" });
return true;
}
else
{
principal = null;
return false;
}
}
ありがとう!それはうまくいった。申し訳ありませんが、アップアップしています。それは私に15の担当者が必要だと言います。 – Rash