У меня возникла проблема при попытке создать экземпляр класса C # .NET, который был открыт для COM в классическом приложении ASP. Я использовал tlbexp для создания библиотеки типов и зарегистрировал ее в службах компонентов; Теперь при попытке создать объект как таковой:
Server.CreateObject("The.Class.Name")
Я получаю ошибку:
Ошибка объекта сервера 'ASP 0177: 80131534'
Server.CreateObject Failed
Я искал в Интернете информацию об этой ошибке и нашел многочисленные обсуждения, но не нашел решения. Код ошибки 0x80131534, очевидно, означает «COR_E_TYPEINITIALIZATION, тип, который не удалось инициализировать», что предполагает, что проблема будет в конструкторе. Конструктор рассматриваемого класса устанавливает личное поле для экземпляра другого класса из той же сборки, а затем считывает некоторые параметры конфигурации из файла XML. Это поведение проверено модулем, и я проверил, что файл существует; Я не вижу ничего другого, что могло бы там проникнуть.
Несколько других моментов, которые могут или не могут быть полезны:
- Тестовый проект .NET, ссылающийся на DLL, может создать экземпляр класса просто отлично; однако тестовый проект VB6, ссылающийся на TLB, взрывается с той же ошибкой. И DLL, и TLB находятся в одном месте.
- Это приложение работает локально, в Windows XP Professional SP3 и IIS 5.1.
- Сборка .NET построена с использованием .NET Framework 2.0, хотя на машине установлено 3.5.
Я знаю других людей, которые не получают эту ошибку в своих сборках, поэтому я считаю, что это может быть что-то экологическое. Любые предложения приветствуются, так как я пытался исправить это в течение некоторого времени.
Заранее спасибо.