2009-07-22 13 views
0

Je n'arrive pas à obtenir les adresses IPv6 pour fonctionner avec le .net WSE SoapTcpTransport.GetInputChannel ou plus précisément SoapReceivers.Add, qui utilise GetInputChannel sous les couvertures. Puisque personne d'autre sur la planète ne semble avoir ce problème, je suppose que je fais quelque chose de mal.IPv6 et SoapTcpTransport.GetInputChannel (WSE)

Si je crée un canal d'entrée SOAP en utilisant une adresse IPv4 et un port (soap.tcp: //192.168.0.198: 9063) alors tout semble aller très bien. Lorsque j'utilise l'adresse IPv6 pour la même carte réseau (soap.tcp: // [fe80 :: c450: 7142: 67f5: ad66% 11]: 9063), SoapTcpTransport.GetInputChannel lève une exception: "System.ArgumentException: WSE813: L'adresse de transport suivante n'a pas pu être mappée à une interface réseau locale: soap.tcp: // [FE80: 0000: 0000: 0000: C450: 7142: 67F5: AD66]: 9063/.. "

La seule différence entre les deux est que l'Uri est créé avec une adresse IPv4 ou une adresse IPv6. Les deux adresses répondent à ping. Ce comportement est le même pour les deux Microsoft.Web.Services2 et 3. J'ai un test unitaire MS qui reproduit la question:

[TestMethod] 

public void ShouldConstructInputChannelWithIpv6Address_Selfcontained() 
{ 

    Uri via = new Uri("soap.tcp://[fe80::c450:7142:67f5:ad66%11]:9063"); 

    EndpointReference receiveEndpoint = new EndpointReference(via); 

    SoapTcpTransport soapTransport = new SoapTcpTransport(); 

    ISoapInputChannel inputChannel = soapTransport.GetInputChannel(receiveEndpoint, SoapChannelCapabilities.ActivelyListening); 
    inputChannel.Close(); 

    Assert.IsTrue(true); // If it makes it this far without an exception, then that's progress. 
} 

J'ai demandé ce same question on the MSDN forums.

Répondre