我在使用.NET WSE SoapTcpTransport.GetInputChannel或更具体的SoapReceivers.Add(使用GetInputChannel)获取IPv6地址时遇到问题。由于地球上没有其他人似乎有这个问题,我认为我做错了什么。
如果我使用IPv4地址和端口(soap.tcp://192.168.0.198:9063)创建SOAP输入通道,那么一切似乎都很好。当我将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.
}
答案 0 :(得分:0)
我道歉。我不知何故错过了你的问题。我在ASMX论坛上回答了这个问题:
只是为了确保:你知道“WSE is Obsolete - Use Only If Necessary”吗?