.NET COMオブジェクトのインスタンスを作成しています。ConfigurationManager.AppSettingsおよびConfigurationManager.ConnectionStringsプロパティ。 アセンブリ設定ファイルに設定があっても、気づいたことがあります。 "ComLib.dll.config"これらの設定は実行時には利用できません。asp-classic Webページによって呼び出される.Net COMオブジェクト内でConfigurationManager.App/ConnectionSettingsを編集する方法
Dim COMObject
Set COMObject = Server.CreateObject("COMAPI.COMObject")
私は.NETのCOMオブジェクトのコンストラクタにステップ私のVS2010のデバッガを使用(COMAPI.COMObject:
は、私は、次を使用してASPクラシックWebページからのCOMオブジェクトを作成するために電話をかけます)。これがポイントです。ConfigurationManagerがロードされているかどうかを確認しました。
両方「Assembly.GetExecutingAssembly」と「Assembly.GetCallingAssembly」は「ComLib.dll」アセンブリ登録場所への完全なパスで同じ結果を有します。それは私が期待しているものです。この場所には"ComLib.dll.config"ファイルもありますが、これはConfigurationManagerに引き込まれません。
私は、例外が発生し、次のコマンドを使用してのAppSettingsをクリアしようとすると:
ConfigurationManager.AppSettings.Clear();
例外は次のとおりです。: "Serverオブジェクト006〜ASP 0177〜Server.CreateObjectには〜80131902失敗しました"
上記の例外は「AppSettingsは読み取り専用です」というASP Classicの解釈ですが、私は100%確実ではありません。
私が上に移動し、「ComLib.dll.config」ファイルをロードし、その後が設定ConfigurationManager.AppSettingsに追加のAppSettingsの各項目の上に実行されているが、それは同様に例外が発生しています:"サーバーオブジェクト:006〜ASP 0177〜Server.CreateObjectが失敗しました〜80131902"。次のように
私は.NETのCOMオブジェクトで使用するコードは次のとおりです。
Assembly comApiAssembly = Assembly.GetExecutingAssembly();
string comApiLocation = comApiAssembly.Location;
configuration = null;
configuration = ConfigurationManager.OpenExeConfiguration(comApiLocation);
var toLoadEnumberable = configuration.AppSettings.Settings.GetEnumerator();
while (toLoadEnumberable.MoveNext())
{
var current = (KeyValueConfigurationElement)toLoadEnumberable.Current;
ConfigurationManager.AppSettings.Add(current.Key, current.Value);
}
この.NET COM LIBは、他の.NETへの呼び出しを行うために使用されているように私はのConfigurationManagerで私の設定情報を必要としますアセンブリ。他の.NETアセンブリでは構成が必要です。
ありがとうございます。