Я создаю экземпляр .NET COM-объекта и хотел бы обновить свойства ConfigurationManager.AppSettings и ConfigurationManager.ConnectionStrings .Я заметил, что, хотя у меня есть настройки в конфигурационном файле сборки, например, "ComLib.dll.config" , эти настройки недоступны во время выполнения.
Я звоню, чтобы создатьCOM-объект из классической веб-страницы ASP с использованием следующего:
Dim COMObject
Set COMObject = Server.CreateObject("COMAPI.COMObject")
Я использую отладчик VS2010, чтобы войти в конструктор моего COM-объекта .NET (COMAPI.COMObject).Именно здесь я проверяю ConfigurationManager , чтобы проверить, что загружено.
Оба "Assembly.GetExecutingAssembly" и "Assembly.GetCallingAssembly" имеют тот же результат, что и полный путь к "ComLib.dll" зарегистрированному местоположению сборки.Что я и ожидаю.В этом месте также находится файл "ComLib.dll.config" , который не загружается в ConfigurationManager .
Когда я пытаюсь очистить AppSettings с помощью следующей команды возникает исключение:
ConfigurationManager.AppSettings.Clear();
Исключение составляет: "Объект сервера: 006 ~ ASP 0177 ~ Server.CreateObject Failed ~ 80131902"
Я думаю, что вышеупомянутое исключение - это интерпретация ASP Classic приложения "AppSettings только для чтения", но я не уверен на 100%.
Что я перехожу, так это загрузка "ComLib.dll.config " file, а затем выполняется над каждым из элементов AppSettings , добавляя их в набор ConfigurationManager.AppSettings , но это также вызывает исключение: "Объект сервера: 006 ~ ASP 0177 ~ Server.CreateObject Failed ~ 80131902 ".
Код, который я использую в .NET COM Object, выглядит следующим образом:
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);
}
Мне нужна информация о конфигурации в ConfigurationManager , так как эта .NET COM LIBиспользуется для вызова других сборок .NET.Для других сборок .NET требуется настройка.
Заранее спасибо.