Mamy kilka dll com Jest w mojej pracy, a my często napotkasz problemy gdzie zarejestrować DLL z regasm i dll nie działa. Działa w innych środowiskach, ale z jakiegoś powodu po prostu nie zadziała w tej jednej instancji. Komputery podręczne są zmienne. Czasami będziemy go rejestrować, wyrejestrowywać, ponownie rejestrować i restartować. Czasem w tajemniczy sposób zaczynają działać, innym razem nie.
Jest jeszcze kilka rzeczy, które mogą pójść nie tak.
Upewnij się, że ustawiono odpowiednie uprawnienia dla folderów, w których znajduje się dll i dla samej biblioteki dll. Upewnij się również, że wszystkie zależne biblioteki DLL są obecne i mają również odpowiednie uprawnienia. Upewnij się, że wszystko, do czego dll potrzebuje dostępu, ma również odpowiednie uprawnienia.
Jeśli to się nie powiedzie, otwórz regedit. Wyszukaj identyfikator powiązany z obiektem com. Czasami odkryjesz, że ścieżki, które zawiera rejestr, są pomieszane. Wyczyść wszelkie odwołania do obiektu COM, zrestartuj i ponownie zarejestruj.
Widziałem również wyjątek zgłaszany do konstruktora powodującego problemy. Po uruchomieniu obiektu com wysadza w powietrze. W jednym z naszych obiektów dodano metodę wysyłania wiadomości e-mail w przypadku wystąpienia wyjątku.
W jednym przypadku mieliśmy stary obiekt com, który nie był już zgodny z wersją uruchomionych okien. Jeśli zmodernizowałeś serwer, może to być problem. W naszym przypadku napisaliśmy własny komponent, aby zastąpić zepsuty stary.
Również upewnić się, że jeśli obiekt com jest silnie wpisany skorzystanie z „regasm/TLB/codebase fickle_com_object.dll”
W skrócie istnieje kilka rzeczy, które powodują obiektu COM nie działa:
- wiele ścieżek w rejestrze
- Błędne uprawnień zabezpieczeń folderów
- upaść, gdy tworzony
Być może jedna z tych rzeczy rozwiąże Twój problem. Wiem, jak trudno czasem. Powodzenia!
Czy plik .dll jest zarejestrowany na serwerze UAT, tzn. Z 'regsvr32'? – mellamokb
Przepraszam, zapomniałem wspomnieć o tej części. Tak dll jest zarejestrowany na serwerze UAT za pomocą Regasm. – Bugreport
Czy zarejestrujesz się.Zestaw NET do użytku zarówno w wersji 32-bitowej, jak i 64-bitowej? Nie wiem, czy klasyczne ASP działa jako proces 32-bitowy lub 64-bitowy (prawdopodobnie pod w3wp.exe). Zauważ, że czasami wywołanie CreateObject może przebiegać bezgłośnie, pojawia się tylko błąd podczas próby użycia obiektu. Sugeruję, aby spróbować utworzyć utworzony przez Microsoft obiekt COM widoczny w systemie COM, aby sprawdzić, czy system działa w zasadzie, zanim dowiesz się, co jest nie tak z twoją konkretną implementacją. – Dai