Я занимаюсь разработкой на компьютере с Windows 7 x64, развертывая на сервере Windows 2008 x32.В данный момент я добавляю сервисы WCF к некоторым внутренним приложениям, чтобы мы могли создавать более мелкие клиенты, используя привязки net.tcp, которые сообщают пользователю о том, что делает сервер, без запуска нескольких экземпляров сервера.Чтобы сократить объем администрирования приложений, я попытался включить общий доступ к портам в своем первом серверном приложении.Я использую приложение для самостоятельного размещения службы WCF, чтобы при необходимости их можно было легко перемещать с одного сервера на другой.Вот код запуска сервера:
Dim _service_host As ServiceHost
Dim active_server_address As Uri = New UriBuilder("net.tcp", "localhost", CInt(My.Settings.ServerPort)).Uri
_service_host = New ServiceHost(GetType(UpdateServiceOps), active_server_address)
_service_host.AddServiceEndpoint(GetType(IUpdateService), New NetTcpBinding With {.Name = "endpoint_tcp"}, "MiddlewareEndpoint")
_service_host.Description.Behaviors.Add(New ServiceMetadataBehavior)
_service_host.AddServiceEndpoint(GetType(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding, "mex")
_service_host.Open()
Это прекрасно работает.Однако, когда я изменяю это на то, что ниже, я получаю ошибкуВот код:
Dim _service_host As ServiceHost
Dim active_server_address As Uri = New UriBuilder("net.tcp", "localhost", CInt(My.Settings.ServerPort)).Uri
_service_host = New ServiceHost(GetType(UpdateServiceOps), active_server_address)
_service_host.AddServiceEndpoint(GetType(IUpdateService), New NetTcpBinding With {.Name = "endpoint_tcp", .PortSharingEnabled = True}, "MiddlewareEndpoint")
_service_host.Description.Behaviors.Add(New ServiceMetadataBehavior)
_service_host.AddServiceEndpoint(GetType(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding, "mex")
_service_host.Open()
Когда я ставлю точку останова в последней строке, я получаю следующую ошибку: Unable to automatically step into the server. Connecting to the server machine 'nettcpportsharing' failed. The requested name is valid, but no data of the requested type was found.
В блоке Try ... Catch, в котором указан код, тип исключения - AddressAlreadyInUseException
.... но когда я запускаю netstat, я больше не вижу, что слушает этот адрес.В моем решении нигде не встречается «nettcpportsharing».Я проверил, чтобы убедиться, что служба общего доступа к портам Net.Tcp запущена.Есть идеи?