Table of Contents
Możesz napotkać kod błędu wskazujący, że żądana usługa nie została znaleziona zdalnie. Cóż, istnieje kilka sposobów rozwiązania tego niepowodzenia, więc omówimy je za chwilę.
Komputer działa wolno?
Pracuję nad skonfigurowaniem praktycznie dowolnego bardzo prostego globalnego połączenia .remoting, ale nie mogę wyskoczyć za pomocą magicznego zaklęcia.
Mam pokazaną klasę hostingu, która służy jako singleton dla metryk procesu obsługi.
klasa public MyRemoteServerClass: MarshalByRefObject public void DoCos() System.Diagnostics.Trace.Assert(fałsz); Ignoruj obiekt publiczny InitializeLifetimeService() zawróć null;
W oparciu o pewną wiedzę zbliżoną do .Net remoting, napisałem powyższy unikalny kod, aby utworzyć instancję i zarejestrować klasę pojazdu w usłudze:
dźwięk void Main(string[] args) Serwer MyRemoteServerClass = new MyRemoteServerClass(); Kanał TcpChannel = znakomity TcpChannel (8080); ChannelServices.RegisterChannel(kanał, fałsz); pętla = url "tcp://localhost:8080/MyRemoteServerClass"; RemotingServices.Marshal(Server, URL, Server.GetType()); System.Konsola.ReadLine();
Komputer działa wolno?
ASR Pro to najlepsze rozwiązanie dla potrzeb naprawy komputera! Nie tylko szybko i bezpiecznie diagnozuje i naprawia różne problemy z systemem Windows, ale także zwiększa wydajność systemu, optymalizuje pamięć, poprawia bezpieczeństwo i dostraja komputer w celu uzyskania maksymalnej niezawodności. Więc po co czekać? Zacznij już dziś!
Napisałem to kodowanie kuponu w kliencie .Net WinForms, aby wywołać MyRemoteServerClass.Function:
dosomething' profesjonalny void button1_Click(object sender, EventArgs e) string url="tcp://localhost:8080/MyRemoteServerClass"; ChannelServices.RegisterChannel(nowy TcpChannel(), false); Korzeń MyRemoteSserverClass oznacza Activator.GetObject(typeof(MyRemoteServerClass), url) jako MyRemoteServerClass; Źródło. Zrób coś();
Wywołanie Activate.GetObject wydaje się uzyskiwać dobre odwołanie do serwera proxy do instancji serwera MyRemoteServerClass. Jednak kiedy dzwonię do DoSomething, otrzymuję wyjątek „Żądana usługa nie została znaleziona”.
Przeszukaj stos węzłów: w System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack tankStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders i responseHeaders)
Zgłaszany jest wyjątek tylko dla [0]: w System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) znalezione w System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData i msgData, wpisz Int32) W RemoteExampleServer.MyRemoteServerClass.DoSomething() at RemoteExampleClient.Form1.button1_Click (Nadawca obiektu, EventArgs w e) c:AaronRemoteExampleClientForm1.cs:line 30} System.Exception System.Runtime.Remoting.RemotingExceptionCo mam źle? Odkryłem, że dostęp do tych programów jest dozwolony przez zaporę (i przechwytuję dokładnie to samo zachowanie, kiedy zwykle całkowicie wyłączam zaporę). Na moim komputerze nie ma ochrony innych aplikacji.
PS. Preferuję rozwiązania, które nie wymagają zmian w obrazie XML App.config. Jeśli jest to możliwe, chciałbym, aby utworzyło zdalne połączenie .Net jako część przestrzeni kodu.
Próbuję skonfigurować jakiekolwiek lepsze połączenie sieciowe. Bardzo proste zdalne sterowanie i nie mogę wymyślić cudownego wyzwania.
Mam każdą klasę po stronie serwera, która prawdopodobnie powinna być każdą pojedynczą i obsługiwaną przez czas trwania tego procesu biznesowego.
Klasa publiczna MyRemoteServerClass: MarshalByRefObject aplikacja jest nieprawidłowa DoCoś() System.Diagnostics.Trace.Assert(fałsz); obiekt zastępujący osoby InitializeLifetimeService() odzyskuje wartość null;
W oparciu o to, czego dowiedziałem się o zdalnej interakcji .Net, napisałem ten kod, aby dalej tworzyć instancję rejestracji klasy serwera w usłudze:
interferencja void Main(string[] args) Forum MyRemoteServerClass sugeruje nowe MyRemoteServerClass(); Kanał TcpChannel = nowy kanał TcpChannel (8080); ChannelServices.RegisterChannel(kanał, fałsz); string = URL "tcp://localhost:8080/MyRemoteServerClass"; RemotingServices.Marshal(Server, URL, Server.GetType()); System.Konsola.ReadLine();
Umieściłem ten kod w .Net kupujący winforms, aby wywołać funkcję MyRemoteServerClass.DoSomething:
prywatna pustka button1_Click(object sender, EventArgs e) globus link string = "tcp://localhost:8080/MyRemoteServerClass"; ChannelServices.RegisterChannel(nowy TcpChannel(), false); MyRemoteServerClass oznacza dla głównego Activator.GetObject(typeof(MyRemoteServerClass), url) jako MyRemoteServerClass; root.Coś();
Wywołanie Activate.GetObject wydaje się sposobem na dotarcie do odwołania serwera proxy do przypadku hosta MyRemoteServerClass. Jednak, gdy kontaktuję się z „DoSomething”, otrzymuję wyjątek „Zażądano usługi, ale nawet nie znaleziono”.
Śledzenie stosu serwera: w System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack sincStack, RequestMsg, imessage ITransportHeaders requestHeaders, Stream requestStream, IMessage i responseMsg, ITransportHeaders& responseHeaders, Stream i responseStream)
Wyjątek jest zgłaszany za pośrednictwem [0]: na System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage na retMsg) System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(Message, RemoteExampleSg) MyRemoteServerClass. Zrób coś() at RemoteExampleClient.Form1.button1_Click(Object email sender, EventArgs in e) c:AaronRemoteExampleClientForm1.cs:line 30} System.Exception System.Runtime.Remoting.RemotingException
Popraw szybkość swojego komputera już dziś, pobierając to oprogramowanie - rozwiąże ono problemy z komputerem.Delete Requested Service Not Found
Verwijder Gevraagde Service Niet Gevonden
Elimina Capacità Richiesta Non Trovata
Excluir Serviço Solicitado Não Encontrado
Angeforderte Website Löschen Nicht Gefunden
Пытался удалить сервис, который не найден
삭제 요청한 서비스를 찾을 수 없음
Eliminar El Servicio Solicitado Pero No Encontrado
Ta Bort Begärd Förmåga Hittades Inte
Supprimer Les Services Demandés Introuvables