0

SQL Server と通信するデータセットを追加したクラス ライブラリ プロジェクトがあります。このプロジェクトの出力は、Web アプリケーションプロジェクトから使用されます。したがって、接続文字列を Web アプリケーション プロジェクトに配置するつもりです。

いくつかのことをしました。アダプターに別の接続文字列を使用させるために、これに遭遇しました。しかし、最終的に次のことを行うと便利であることがわかりました。

Dim adapter as New MyReqeustTableAdapter()
adapter.Connection.ConnectionString = sMyConnectionString

次に、構成 (app.config) からの接続文字列をシミュレートしてみました。キー「myconstr」を使用してセクションを手動で追加しました。私のアイデアは、次のようなことをすることでした:

sMyConnectionString = ConfigurationManager.ConnectionString("myconstr").ConnectionString

しかし、私のインテリセンスは ConfigurationManager を検出できませんでした。したがって、プロジェクトへの適切な参照を追加する必要がありました。

次に、Web アプリケーション プロジェクトの設定デザイナーを介して接続文字列を追加しました。それを参照するために上記のキーを与えました。ただし、上記のステートメントは null 参照例外をスローするようです。

4

5 に答える 5

0

基本的に必要なのは、ライブラリのグローバル パラメータを外部から変更できることです。app.config を単独で使用しても、すぐにその可能性が得られるわけではありません。ライブラリの内部設定をまだ公開していません。それを念頭に置いて、公開を実現するための非常に簡単な方法の 1 つは、ライブラリに app.config のアサイナーを作成することです。

public static class Setter
{
    public static void Set(string name, string value)
    {
        Properties.Settings.Default[name] = value;
    }
}

次に、global.asax または他の場所で Web アプリケーションを開始します。

MyLibrary.Setter.Set("X", ConfigurationManager.ConnectionStrings["Y"].ConnectionString);
于 2011-03-07T07:47:11.717 に答える
0

クラスライブラリプロジェクトへの参照を追加しSystem.Webて使用できますSystem.Web.Configuration.WebConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString)

于 2011-02-09T13:13:55.653 に答える
0

クラス ライブラリapp.configプロジェクトで定義されている構成ファイル ( ) は、システムによって自動的に使用されることはありません。消費できる唯一の構成ファイルは、Web アプリケーション内のファイルまたはexe ファイルが .exe アプリケーション内のファイルです。web.config*myexe.exe*.config*myexe.exe*

app.configクラスライブラリに追加しようとしているようです。それはうまくいきません。

2 番目の構成ファイルを にリンクすることは可能ですweb.configが、おそらく役に立たないでしょう。

于 2011-02-09T13:14:10.710 に答える
-1

あなたの質問から、あなたはn層アプリケーションを構築していると思います。あなたが言及した2つのオプションの方が良いと思います。

接続文字列を含むパブリック プロパティを持つ DAL (データ アクセス レイヤー) クラスの基本クラスを作成する必要があります。

ところで、ホストへのアクセス権を持っている、または取得した人が簡単に読み取ることができるファイルに接続文字列を保存するのではなく、接続文字列を非表示/保護するのに役立ちます

 public class DALBase
 {
     public static string connString
     {
         get { return "Data Source=localhost\\SqlExpress;Initial Catalog=theDb Integrated Security=True"; }
     }
 }
于 2011-03-07T08:30:19.817 に答える