Mam aplikację klienta .NET, która wywołuje moją usługę sieci Web .NET, która z kolei wywołuje usługę internetową innej firmy, na przykład na stronie "www.foo.com".Przyczyna wyjątku "System.Net.WebException: Zdalna nazwa nie mogła zostać rozstrzygnięta"?
.NET Client -> 'My Web Service' -> 'Third Party Web Service'
Od Visual Studio 2008, to wszystko działa dobrze, to znaczy, biegnę 'My Web Service' w localhost:someport
które z powodzeniem nazywa 'Third-Party Web Service'.
Opublikowałem następnie "Moja usługa sieciowa" na pudełku Windows 2003 Server. Teraz, gdy "Moja usługa sieciowa" nazywa się "Usługa WWW innej firmy", otrzymuję wyjątek,
"System.Net.WebException: Nie można rozpoznać nazwy zdalnej:" www.foo.com "."
Próbowałem następujące:
Na serwerze gdzie rozmieszczone 'My Web Service', otworzyłem Internet Explorer i wpisany adres usług sieci http://www.foo.com/somewebservice.asmx '. Ta operacja zakończyła się pomyślnie, ponieważ wyświetlono listę dostępnych metod usługi sieci Web.
W pliku "Moja usługa sieciowa" zmieniono adres URL "Zewnętrzna usługa sieciowa" z nazwy strony internetowej na jej adres IP. Nie powiodło się to z wyjątkiem: "System.Net.Sockets.SocketException: Operacja gniazda była próbowana do nieosiągalnej sieci".
Następnie napisałem prostą wiązkę testową Windows Forms, aby po prostu zadzwonić do "usługi zewnętrznej innej firmy". Uruchomiłem tę wiązkę testową na serwerze i pomyślnie zadzwoniłem do "usługi innej firmy" .
Następnie wypróbowałem inną usługę internetową innej firmy, która dała takie samo zachowanie jak w 1, 2 i 3 powyżej.
W końcu dodałem adres IP do pliku "hosts" na serwerze, ale otrzymałem ten sam błąd "nazwa zdalnego nie udało się rozwiązać", chociaż tym razem o wiele szybciej! Jeśli był to problem z DNS, nie spodziewałbym się, że moje testy 1 i 3 będą działać.
Jak naprawić ten problem?
Jest to najprawdopodobniej spowodowane ustawieniami zabezpieczeń związanymi z twoją witryną/usługą w IIS na serwerze. Coś w tych ustawieniach uniemożliwia wywoływanie ich na inne serwery. Powinieneś spróbować opublikować to również na ServerFault. – BBlake
Czy masz serwer ISA lub niektóre zapory sieciowe lub serwery proxy? – rahul
To był problem z serwerem proxy na końcu. Komunikat o wyjątku był czerwonym śledziem. Aby to naprawić, utworzyłem instancję WebProxy przy użyciu adresu IP i portu naszego serwera proxy: Proxy WebProxy = nowy WebProxy (proxyServerIPAddress, Convert.ToInt32 (proxyServerPort)); myService.Proxy = proxy; –