Oprava: Chybová zpráva v aplikaci .NET vzdálené komunikace při použití adres IPv6: "operace soketu byl pokusil Nedosažitelný hostitel"

Příznaky

Jde o takovouto situaci:
  • V Microsoft rozhraní.NET Framework remoting aplikace v počítači se systémem Microsoft Windows XP nebo Microsoft Windows Server 2003, použijte protokol IP verze 6 (IPv6) místní adresy nebo adresy IPv6 místního propojení.
  • Aplikace rozhraní.NET Framework remoting používá kanálu TcpChannel.
V tomto scénáři obdržíte následující chybová zpráva:
System.Net.Sockets.SocketException: Operace soketu byl pokusil Nedosažitelný hostitel

Příčina

Při použití adres IPv6 v počítači se systémem Windows XP nebo Windows Server 2003, Microsoft rozhraní.NET Framework odebere Identifikátor zóny z identifikátor URI (Uniform Resource) před remoting aplikace připojí k serveru.

Při použití adres IPv6 v počítači se systémem Windows Vista, aplikace rozhraní.NET Framework remoting používá místním dílčí sítě, pokud není zadán Identifikátor zóny. Proto k tomuto problému nedochází v systému Windows Vista.

Řešení

Informace o opravě hotfix

Podporovaná oprava hotfix je nyní k dispozici od společnosti Microsoft. Je však určena opravit pouze problém popsaný v tomto článku. Použijte ji pouze u systémů, ve kterých dochází k tomuto konkrétnímu problému. Tato oprava hotfix může být dále testována. Proto pokud jste závažně tento problém, doporučujeme počkat další aktualizaci service pack pro rozhraní.NET Framework 2.0, která obsahuje tuto opravu hotfix.

Chcete-li tento problém vyřešit okamžitě, obraťte se na technickou podporu společnosti Microsoft získat opravu hotfix. Úplný seznam telefonních čísel služeb podpory zákazníků společnosti Microsoft a informace o cenách podpory naleznete na následujícím webu společnosti Microsoft:Poznámka: Ve zvláštních případech mohou být stornovány poplatky, které jsou třeba obvykle zaplatit za telefonní hovory, pokud pracovník služeb podpory společnosti Microsoft určí, že konkrétní aktualizace odstraní váš problém. Výdaje na technickou podporu použije dalších otázek a problémů, které nelze vyřešit konkrétní aktualizací.

Poznámka: Tuto opravu hotfix lze použít v případě, že použijete následující:
  • Místní adresy IPv6 nebo adresy IPv6 místního propojení
  • Kanál HttpChannel
  • Server aktivován objekty
Další scénáře postupujte podle kroků, které jsou uvedeny v části "Řešení".

Předpoklady

Rozhraní.NET Framework 2.0 nainstalovali tuto opravu hotfix, musí mít.

Požadavek na restartování

Po instalaci této opravy hotfix musíte restartovat počítač.

Informace o nahrazení opravy hotfix

Tato oprava hotfix nenahrazuje žádné další opravy hotfix.

Informace o souboru

Anglická verze této opravy hotfix má atributy (nebo pozdější atributy souborů) uvedené v následující tabulce. Kalendářní data a časy jednotlivých souborů jsou uvedeny v koordinovaném světovém čase (UTC). Při zobrazení informací o souboru je převeden na místní čas. Rozdíl mezi místním časem a časem UTC naleznete na kartě Časové pásmo v položce Datum a čas v okně Ovládací panely.
Název souboruVerze souboruVelikost souboruDatumČasPlatforma
System.runtime.remoting.dll2.0.50727.898299,00828-Jun-200711:30x86

Jak potíže obejít

Chcete-li tento problém vyřešit, použijte jednu z následujících metod:
  • Pokud používáte místní adresy IPv6 nebo adresy IPv6 místního propojení, použijte místo kanálu TcpChannel kanálu HttpChannel.
  • Pokud pomocí kanálu TcpChannel použijte globální adresy IPv6 namísto místní adresy IPv6 nebo adresy IPv6 místního propojení.

Stav

Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".

Další informace

Pro další informace o terminologii používané v aktualizacích softwaru, klepněte na následující číslo článku k zobrazení článku v databázi Microsoft Knowledge Base:
824684 Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft

Informace v zásobníku volání

Trasování zásobníku serveru:
   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
at System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket(EndPoint ipEndPoint)
at System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket()
at System.Runtime.Remoting.Channels.SocketCache.GetSocket(String machinePortAndSid, Boolean openNew)
at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.SendRequestWithRetry(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream)
at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, ITransportHeaders& responseHeaders, Stream& responseStream)
at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)
Vlastnosti

ID článku: 939525 - Poslední kontrola: 13. 1. 2017 - Revize: 1

Váš názor