Visual Studio、フレームワーク 4.7.1 を使用して Web サービスに取り組んでいます。その Web メソッドの 1 つは、別の Web サービス (別の会社によって提供される) を呼び出す必要があります。受信したパラメーター (メイン アプリケーションのビジネス ロジックと一致する) を、他の Web サービスが処理できる値に変換します (独自のビジネス ロジックに従って)。これを行うために、Web.config ファイルに格納されているデータに大きく依存しています。
私はそれを直接テストしました (Web サービスを開始し、Web ブラウザ ページで自動的に生成されたページで Web メソッドを呼び出します)、すべて正常に動作しました。
ここで、同じ Web メソッドを呼び出すテスト アプリケーション (これも Visual Studio、フレームワーク 4.7.1) をビルドする必要があります。最初のテストで、Web サービスがそれ自体ではなく、テスト アプリケーションの構成ファイルにアクセスしようとしていることに気付きました ( 「 ConfigurationManager.AppSettings で Web.config を読み取れない」で説明されているように)。
そこで、Web.config に applicationSettings セクションを作成し、appSettings からすべてのデータをそこに移動しました。うまくいきました。
ただし、カスタム セクションでも同じことが起こることに気付きました。それらの1つは次のようになります。
<configSections>
<section name="jobTypeLists" type="AdelSoft_WS_FRA.JobTypesSection" />
</configSections>
<jobTypeLists>
<jobTypes>
<jobType codeCustomerType="A" codeJobType="JobForA" />
<jobType codeCustomerType="B" codeJobType="JobForB" />
</jobTypes>
</jobTypeLists>
このような構造が独自の .settings ファイルにどのように収まるかはわかりますが、もっと複雑な別のファイルがあります。(同様に、テキスト ノードは最大 4 つの先祖を持つことができます。) これを簡潔にするために、今は提供していませんが、簡単に配置できます。
ConfigurationManager.GetSection("jobTypeLists")
テスト アプリケーションから呼び出されると、null を返します。と同じWebConfigurationManager.GetSection("jobTypeLists")
。
を使用して構成ファイルにアクセスしようとしましたConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile)
が、返される構成オブジェクトでセクションが見つからないようです。
何か意味があるのかわかりませんが、Configuration オブジェクトのFilePath
プロパティには「C:\Folder\InnerFolder\WebServiceFolder\web.config.config」が含まれています。この 2 番目の ".config" はなぜですか? 「.config」拡張子なしで同じ文字列を ConfigurationManager.OpenExeConfiguration() に渡そうとしました: null が返されました。(そうあるべきだと私は感じています。)
構成オブジェクトには 10 個のセクション グループと 22 個のセクションがあり、表と裏を区別することはできません。同様に、それらを一覧表示できます。