2016-06-28 7 views
0

C#およびMVCを初めて使用しました。ユーザーが初期SQL Server接続文字列を構成または変更できるイントラネットアプリケーションを作成しようとしています。接続はSQL混合モード認証をサポートする必要があります。私のバックエンドのスキルは例外的ですが、これはWebベースのイントラネットWebアプリケーションを作成する私の最初の試みです。私は3日間Googleを検索して、例がないか、チュートリアルや文書が見つからないようにしています。私はこれが受け入れられた練習であるかどうかわからないという点に達しました。私はVS2015、SQL Server 2012、C#、MVC、ASP.Net、および.Net Framework 4.61をターゲットにしています。どんな指導も高く評価されます。MVC/Cを使用してエンドユーザーSQL Server接続ダイアログを作成する方法

+1

「SqlConnectionStringBuilder」はおそらくあなたが定義した接続を構築するものです。シンプルなフォームは値を収集しますが、名前、住所、電話番号、サーバー、データベース、ログイン - そのデータだけを収集しているかどうかは関係ありません。 – Crowcoder

答えて

1

おそらくあなたは簡単しかしSqlConnectionStringBuilderは、実行時に要求して、接続文字列を構築することができ、動的にweb.configにデフォルト/初期接続文字列を変更(およびweb.config上で直接それを変更することが有害と考えられる)ことはできません。

// assume these properties are part of DB provider definition 
public class DatabaseSettings 
{ 
    public String ConnectionName { get; set; } 
    public String ServerName { get; set; } 
    public String DatabaseName { get; set; } 
    public String UserId { get; set; } 
    public String Password { get; set; } 
} 

// controller method definition 
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); 

builder.DataSource = DatabaseSettings.ServerName; 
builder.InitialCatalog = DatabaseSettings.DatabaseName; 
builder.IntegratedSecurity = true; 
builder.UserID = DatabaseSettings.UserId; 
builder.Password = DatabaseSettings.Password; 
builder.MultipleActiveResultSets = true; 

// modify initial connection string in runtime 
// note that ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString is readonly by default, 
// thus use reflection to disable private bReadOnly field before adding custom connection string 
var connectionString = ConfigurationManager.ConnectionStrings; 
var collection = typeof(ConfigurationElementCollection).GetField("bReadOnly", BindingFlags.Instance | BindingFlags.NonPublic); 
collection.SetValue(connectionString, false); 

// This one may work if you tend to change default connection string value 
// connectionString[0].ConnectionString = builder.ToString(); 

// Safer way by adding new name rather than replace default one 
connectionString.Add(new ConnectionStringSettings(DatabaseSettings.ConnectionName, builder.ToString())); 

AFAIKユーザー定義の接続文字列を各ユーザーのXMLファイルに格納し、誰かが要求したときにプログラムで読み込むことができます(Reading connection string from external config file参照)。

イントラネット&インターネット用フォーム認証(Windows &)については、完全なアプリケーションがフォーム認証モードに依存する必要がある2つのエントリポイント(つまり仮想ディレクトリ)にIISをセットアップします。 Windows認証のコントローラは、ユーザーの身元を渡すだけでメインサイトにリダイレクトされます。

メインサイトのログインページで、「Windows/Active Directoryアカウントでログイン」ボタン(既存のソーシャルメディアアカウントのログインボタンに似ています)を追加し、イントラネットユーザーを特別に細工されたコントローラにリダイレクトしますWindows認証モードから資格情報を受け取ります。

おそらく、これはあなたのニーズに答える最善の方法ではありませんが、少なくとも、何をすべきかを学び、理解するために心が開かれるかもしれません。

参照:

1)を変更し、接続文字列プログラム

http://david.gardiner.net.au/2008/09/programmatically-setting.html

2)デュアルモード認証

https://msdn.microsoft.com/en-us/library/bb669066(v=vs.110).aspx(MS SQL Server認証品)

http://www.codeguru.com/csharp/.net/net_security/authentication/article.php/c19559/ASPNET-Mixed-Mode-Authentication.htm

http://mvolo.com/iis-70-twolevel-authentication-with-forms-authentication-and-windows-authentication/

+0

これは私が必要としていたものです。ご協力いただきありがとうございます。 –

関連する問題