2009-07-22 4 views
0

У меня возникла проблема с получением адресов IPv6 для работы с .NET WSE SoapTcpTransport.GetInputChannel или, более конкретно, SoapReceivers.Add, который использует GetInputChannel под обложками. Поскольку никто на планете, похоже, не сталкивался с этой проблемой, я предполагаю, что я делаю что-то неправильно.IPv6 и SoapTcpTransport.GetInputChannel (WSE)

Если я создаю входной канал SOAP с использованием IPv4-адреса и порта (soap.tcp: //192.168.0.198: 9063), тогда все выглядит просто отлично. Когда я использую IPv6-адрес для того же сетевого адаптера (soap.tcp: // [fe80 :: c450: 7142: 67f5: ad66% 11]: 9063), то SoapTcpTransport.GetInputChannel выдает исключение: «System.ArgumentException: WSE813: Следующий транспортный адрес не может быть сопоставлен с локальным сетевым интерфейсом: soap.tcp: // [FE80: 0000: 0000: 0000: C450: 7142: 67F5: AD66]: 9063/.. "

Единственная разница между ними состоит в том, что Uri создается с IPv4 или адресом IPv6. Оба адреса отвечают на ping. Такое поведение является одинаковым для обоих Microsoft.Web.Services2 и 3. У меня есть модульное тестирование MS, воспроизводящий вопрос:

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

Я задал этот same question on the MSDN forums.

ответ

0

Извиняюсь. Я как-то упустил ваш вопрос. Я ответил на него на форуме ASMX:

Просто, чтобы убедиться: что вы знаете о "WSE is Obsolete - Use Only If Necessary"?