2009-05-15 10 views
1

WCFサービスホストとして機能するプロジェクトを持つ.NET 2008ソリューションがあります。そのプロジェクトには、プロジェクトが完了したときにインストーラで置き換えられる設定のweb.configファイルがあります。これらの設定は、接続文字列とそれ以外のものを構成するコンポーネントです。Web.config値が層を経由して渡される

このWCFプロジェクトは、Entity Frameworkを使用するDALプロジェクトを参照するビジネスロジックプロジェクト(サービスコードを実装するクラスライブラリ)を参照します。

私が知りたいのは、WCFプロジェクトのweb.configの値をDALに取得する方法です。私がOpenMappedExeConfigurationで見た相対パスを使用せずに。私はweb.configファイルの設定に基づいてDALに接続文字列を構築する必要があります。

ご回答ありがとうございます。

答えて

1

1つのフォルダに接続文字列のような共有アイテムを格納しています。これは、ソースコードが存在するフォルダの下にもありません。 DAL層では、単にConfigurationManagerを使用してそれを取得します。

私の外部の "設定"フォルダから "ConnectionStrings.config"ファイルを追加します。(あなたの場合はWCFプロジェクトです)そのままリンク(ビジュアルスタジオでは、 'add 「既存のアイテム」 - >「アイテムを選択」 - >「追加」ボタンの横にある矢印は、このオプションが存する場所の矢印です)。それから私はちょうどプロジェクトの内容としてそのファイルプロパティ(ソリューションエクスプローラでファイルをクリック - > F4キーを押して)を設定し、フォルダを展開するように変更された場合はもう一度コピーする必要があります。次に、新しいapp.configファイルをプロジェクトに追加します。このファイルには "ConnectionString.config"が含まれています。 connectionstrings.configの

出典:WCFプロジェクトのapp.configをの

<connectionStrings> 
    <add name="MyConnectionString" 
    connectionString="Data source=tralala"/> 
</connectionStrings> 

出典:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <connectionStrings configSource="ConnectionStrings.config"></connectionStrings> 
</configuration> 

私はこれが最善のアプローチであることはよく分かりません。しかし、これまでのところとても良い。

+0

これは、プロジェクトが互いに知っている実行可能なアプローチです。 「ブラックボックス」コンポーネントを開発するときはうまく機能しません。その場合、アプリケーション「Y」にコンポーネント「X」を含めることによって、コンポーネント「X」の必要な構成エントリがアプリケーション構成ファイルに書き込まれるとよいでしょう。残念ながら、それはそのようには機能しません。 –

+0

私が構築しているコンポーネントは、スタンドアロンコンポーネントとしてはあまり役に立たないかもしれません。サービス実装コードはBLに存在し、BLはDALに由来するEFエンティティを使用する。しかし、私はジョンに同意し、これは誰もがこのルートに行くことによって注目されなければならないと言います。私はこのアプローチを実装するのに忙しく、フィードバックをします。 – DivanMoller

+0

私はあなたの提案アーニスを試して、それは動作します。私はappSettingsを使用しましたが、connectionStringは使用しませんでした。合意は、私がこれに対する完璧な解決策を見出していない最善の方法ではないかもしれないと私は提案に開放しています。助けてくれてありがとう。 – DivanMoller

0

残念ながら、あなたの質問に対する答えは「コピー&ペースト」です。これはいつも真実です。

このルールの例外として最も近いのは、「新しい」.NET 2.0設定ファイルです。これらの構造とデフォルト値はコンポーネントを定義するアセンブリの一部であるため、コンポーネントは起動時にデフォルト値をアプリケーション構成に書き込むことができます。私は、これを含むコードをinstallutilと連携させて、インクルードするアプリケーションが起動する前にデフォルトを書き出し、アプリケーションが初めて使用される前に設定ファイルのデフォルトを編集しておくことができると思います。

関連する問題