2009-07-22 13 views
0

Ich habe ein Problem beim Abrufen von IPv6-Adressen mit dem .NET WSE SoapTcpTransport.GetInputChannel oder genauer SoapReceivers.Add, die GetInputChannel unter den Abdeckungen verwendet. Da niemand auf der Welt dieses Problem zu haben scheint, gehe ich davon aus, dass ich etwas falsch mache.IPv6 und SoapTcpTransport.GetInputChannel (WSE)

Wenn ich einen SOAP-Eingangskanal mit einer IPv4-Adresse und einem Port (soap.tcp: //192.168.0.198: 9063) erstelle, scheint alles in Ordnung zu sein. Wenn ich die IPv6-Adresse für denselben Netzwerkadapter verwende (soap.tcp: // [fe80 :: c450: 7142: 67f5: ad66% 11]: 9063), löst SoapTcpTransport.GetInputChannel eine Ausnahme aus: "System.ArgumentException: WSE813: Die folgende Transportadresse konnte keiner lokalen Netzwerkschnittstelle zugeordnet werden: soap.tcp: // [FE80: 0000: 0000: 0000: C450: 7142: 67F5: AD66]: 9063/.. "

Der einzige Unterschied zwischen den beiden ist, dass der URI mit einer IPv4- oder einer IPv6-Adresse erstellt wird. Beide Adressen reagieren auf Ping. Dieses Verhalten ist für beide gleich Microsoft.Web.Services2 und 3. ich eine MS-Einheit Test habe, der das Problem reproduziert:

[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. 
} 

ich diesen same question on the MSDN forums gebeten haben.

Antwort