Мне нужно предоставить две конечные точки для автономной службы WCF. Это потому, что я подключаюсь к нему через два разных соединения: одно для подключения к локальной сети, другое для входящих подключений к Интернету.
Моя конечная точка BasicHttp всегда работала, и теперь я пытаюсь добавить конечную точку TCP, поскольку .Net сообщает мне, что у меня не может быть более одной конечной точки / привязки http ...
Моя служба запускается без ошибок, с настроенными обеими конечными точками.
Dim serviceAddyArray(1) As Uri
Dim myServiceAddressLOCAL As New Uri("http://" & localIpAddress & ":" & tcp_port & "/" & servicename)
serviceAddyArray(0) = myServiceAddressLOCAL
Dim myServiceAddressONLINE As New Uri("net.tcp://" & "10.0.0.101" & ":" & 5416 & "/" & servicename)
serviceAddyArray(1) = myServiceAddressONLINE
'myservicehost = New ServiceHost(GetType(plutocomm), myServiceAddress)
myservicehost = New ServiceHost(GetType(plutocomm), serviceAddyArray)
Dim BasicBinding As New BasicHttpBinding
BasicBinding.MaxReceivedMessageSize = 2147483647
Dim TCPBinding As New NetTcpBinding
TCPBinding.MaxReceivedMessageSize = 2147483647
'add local endpoint
myservicehost.AddServiceEndpoint(GetType(Iplutocomm), BasicBinding, myServiceAddressLOCAL)
'add online endpoint
myservicehost.AddServiceEndpoint(GetType(Iplutocomm), TCPBinding, myServiceAddressONLINE)
' Enable metadata publishing.
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15
myservicehost.Description.Behaviors.Add(smb)
myservicehost.Open()
В целях тестирования я установил конечную точку ОНЛАЙН (Интернет) на свой локальный IP-адрес, чтобы устранить любые проблемы с брандмауэром.
При использовании мастера / инструмента добавления ссылки на службу из Visual Studio я не могу подключиться к привязке TCP на net.tcp: //10.0.0.101: 5416 / pluto
Я получаю следующую ошибку при попытке найти привязку с помощью инструмента.
Префикс URI не распознается.
Метаданные содержат ссылку, которую невозможно разрешить: 'net.tcp: //10.0.0.101: 5416 / pluto'.
Соединение с сокетом было прервано. Это может быть вызвано ошибкой при обработке вашего сообщения или превышением тайм-аута приема удаленным узлом, или проблемой базового сетевого ресурса. Тайм-аут локального сокета был «00: 04: 59.9989993».
Существующее соединение было принудительно закрыто удаленным хостом.
Если служба определена в текущем решении, попробуйте создать решение и снова добавить ссылку на службу.
Примечание:
С указанной выше реализацией на собственном хостинге я МОГУ подключиться к конечной точке basicHttpBinding и использовать ее.