Ошибка Server.CreateObject в классическом ASP - PullRequest
2 голосов
/ 25 ноября 2011

Я создал ASP.NET DLL с одной функцией, которую мне нужно использовать на странице Classic ASP.

Я использовал приведенный ниже код для создания объекта на классической странице asp

set PeopleSoft = server.createobject("OPS.PSL")

Я получаю приведенную ниже ошибку при выполнении

Server object error 'ASP 0177 : 80070002' 

Server.CreateObject Failed 

Я искал в stackoverflow, я нашел какое-то решение. Включив «Сделать сборку видимой для COM» и «Зарегистрироваться для взаимодействия COM».

Пожалуйста, помогите мне выйти из этого вопроса

Ответы [ 8 ]

3 голосов
/ 26 декабря 2012

Сначала вы должны зарегистрировать свою DLL, и если проблема не устранена, сделайте следующее:

  • Найдите и щелкните следующий раздел реестра: HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_IGNORE_ZONES_INITIALIZATION_FAILURE_KB945701
  • Примечание. Если подраздел FEATURE_IGNORE_ZONES_INITIALIZATION_FAILURE_KB945701 не существует, его необходимо создать вручную. Если вы используете 64-разрядную ОС, вам может потребоваться использовать HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_IGNORE_ZONES_INITIALIZATION_FAILURE_KB945701 вместо
  • Щелкните правой кнопкой мыши FEATURE_IGNORE_ZONES_INITIALIZATION_FAILURE_KB945701, укажите Новый, а затем щелкните Значение DWORD
  • Введите w3wp.exe для имени новой записи реестра и нажмите клавишу ВВОД.
  • Щелкните правой кнопкой мыши w3wp.exe и выберите команду Изменить.
  • В поле Значение введите 1 и нажмите кнопку ОК.

После установки этого раздела реестра, простой перезапуск пула приложений применит изменения. Ваши компоненты .NET COM больше не будут случайным образом переставать работать без реального решения, кроме перестановки пулов приложений!

1 голос
/ 10 мая 2016

Я только что увидел эту ошибку на сайте, который работал отлично в течение многих лет.Кажется, DLL как-то стала незарегистрированной.Это была неуправляемая DLL, поэтому я смог перерегистрировать ее, используя regsvr32:

%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\regsvr32 "C:\path\to\myAssembly.dll"

(также см. разницу между regasm и regsvr32 )

1 голос
/ 04 сентября 2015

У меня была эта проблема.При регистрации .NET COM-модулей вы должны использовать regasm, а если вы хотите вызывать их из таких приложений, как IIS, вы должны использовать / codebase с этой командой:

regasm yourfilename.dll /codebase
1 голос
/ 26 ноября 2011

Вы зарегистрировали свою dll с regasm.exe на вашем сервере?

http://msdn.microsoft.com/en-us/library/tzat5yw6%28VS.71%29.aspx

0 голосов
/ 25 апреля 2018

Существует еще одна причина, по которой вы можете получить сообщение об ошибке «Server.CreateObject Failed». Видимая DLL-библиотека COM не ведет себя так же, как обычная DLL-библиотека .NET, когда она загружается COM. Вы не можете ожидать, что он загрузит другие библиотеки DLL, которые находятся в том же каталоге, что и ваша DLL, или загружены через менеджер пакетов Nuget. Если вы хотите загрузить другие библиотеки DLL, вы должны зарегистрировать их в глобальном кэше сборок (GAC).

см .: https://stackoverflow.com/a/23902131/2616170

Если сборка не имеет строгого имени, вы не сможете зарегистрировать ее в GAC.

0 голосов
/ 23 марта 2018

Я столкнулся с подобной проблемой, и после долгих исследований я нашел решение, проверьте, работает ли оно для вас. Удаленный сценарий вызывает множество ошибок с различными версиями IE. Если вы передаете управление с одной страницы на другую и создаете оттуда новый объект, вы получите такую ​​возможность неспособности создать объектную ошибку.

Пример:

page x.asp--

function1call() 
function2call() 

further in page x.asp--

function1call(){
   var rs_obj = RSGetASPObject("some-object");
   ----some other things---
   frmPost.action = "someplace.asp"; 
   frmPost.submit();
}  

function2call(){
   var rs_obj = RSGetASPObject("some-object1"); //you wont be able to create 
                                                //this object
   ----some other things---
}

Похоже, что объект remoteScripting не инициируется. Поскольку function1call () вызывает frmPost.submit ().

Если вы объедините эти две функции, он начнет работать. * 1008 то есть *

page x.asp--

    function1call(){
       var rs_obj = RSGetASPObject("some-object");
       var rs_obj = RSGetASPObject("some-object1"); 
       ----some other things---
       frmPost.action = "someplace.asp"; 
       frmPost.submit();

    }
0 голосов
/ 07 марта 2016

Запустите это из командной строки (замените myassembly.dll на ваш путь сборки):

%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\regasm.exe myassembly.dll /codebase
0 голосов
/ 29 ноября 2011

На этом сайте:

http://connect.microsoft.com/VisualStudio/feedback/details/294241/kb937143-breaks-asp-to-net-com-interop

Они исправляют проблему с предоставлением доступа на чтение к IUSR на HKEY_USERS \ S-1-5-20 \ Software \ Microsoft \ Windows \ CurrentVersion\ Настройки Интернета \ Зоны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...