2009-07-22 4 views
0

IPv6 주소가 .NET WSE SoapTcpTransport.GetInputChannel 또는 더 구체적으로 SoapReceivers.Add와 작동하도록 문제가 있습니다.이 주소는 커버 아래에있는 GetInputChannel을 사용합니다. 행성에 아무도이 문제를 안고있는 것 같지 않으므로, 나는 잘못된 것을하고 있다고 생각합니다.IPv6 및 SoapTcpTransport.GetInputChannel (WSE)

IPv4 주소와 포트 (soap.tcp : //192.168.0.198 : 9063)를 사용하여 SOAP 입력 채널을 만들면 모든 것이 잘된 것처럼 보입니다. 동일한 네트워크 어댑터 (soap.tcp : // [fe80 :: c450 : 7142 : 67f5 : ad66 % 11] : 9063)에 IPv6 주소를 사용하면 SoapTcpTransport.GetInputChannel이 예외를 throw합니다. "System.ArgumentException : WSE813 : 다음 전송 주소를 로컬 네트워크 인터페이스에 매핑 할 수 없습니다. soap.tcp : // [FE80 : 0000 : 0000 : 0000 : C450 : 7142 : 67F5 : AD66] : 9063/.. "

유일한 차이점은 둘 사이에는 Uri가 IPv4 또는 IPv6 주소로 생성된다는 것입니다. 두 주소 모두 ping에 응답합니다. 이 문제는 내가 문제를 재생하는 MS 단위 테스트있어 Microsoft.Web.Services2와 3 모두 동일합니다 :이 same question on the MSDN forums을 요구했다

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

.

답변