подключение к локальному клиентскому серверу WCF: сообщение о том, что ни одна служба не прослушивает - PullRequest
0 голосов
/ 27 ноября 2011

Через два года я возвращаюсь к внедрению службы WCF. Я хочу для начала, чтобы настроить супер простой, файл конфигурации бесплатный сервис. У меня есть код сервера ниже. Когда я использую svcutil для создания прокси, все в порядке. Но когда я пытаюсь реализовать клиента самостоятельно с помощью ChannelFactory, меня постоянно мучает сообщение о том, что ни одна служба не прослушивает .... В чем ошибка?

Клиент

Module OnlineLicenceClientConsole

    Sub Main()
        Console.WriteLine("Press enter to connect...")
        Console.ReadLine()
        Dim factory As New ChannelFactory(Of IOnlineLicenceCommunication)(New BasicHttpBinding)
        Dim address As New EndpointAddress("http://localhost:8015/Onlinelicence")
        Dim client = factory.CreateChannel(address)
        Console.WriteLine("Client running...")
        Do While (True)
            Dim computerID = Console.ReadLine()
            Dim request = New LicenceRequest With {.ComputerID = computerID, .CustomerID = "X", .ServiceID = "Y"}
            Console.WriteLine(client.GetLicence(request).StatusMessage)
        Loop
    End Sub

End Module

Хост

Module OnlineLicenceServerConsole

    Sub Main()

        Dim baseAddress As New Uri("http://localhost:8015/OnlineLicence")
        Dim host = New ServiceHost(GetType(OnLineLicenceCommunicator), baseAddress)

        Dim serviceBehavior As New ServiceMetadataBehavior With {.HttpGetEnabled = True}
        host.Description.Behaviors.Add(serviceBehavior)

        host.AddServiceEndpoint(
            GetType(IOnlineLicenceCommunication),
            New BasicHttpBinding,
            "OnlineLicenceCommunicator")

        Try
            host.Open()
            Console.WriteLine("Service running")
            Console.ReadLine()
        Catch e As CommunicationException
            Console.WriteLine("Fout: {0}", e.Message)
            Console.ReadLine()
            host.Abort()
        Finally
            host.Close()
        End Try

    End Sub

End Module

1 Ответ

3 голосов
/ 27 ноября 2011

Адрес конечной точки, который вы передаете конструктору ChannelFactory, неверен.Базовый адрес службы равен http://localhost:8015/OnlineLicence,, а относительный адрес конечной точки, добавленной на хосте, равен OnlineLicenceCommunicator, поэтому адрес конечной точки равен http://localhost:8015/OnlineLicence/OnlineLicenceCommunicator.

Dim factory As New ChannelFactory(Of IOnlineLicenceCommunication)(New BasicHttpBinding) 
Dim address As New EndpointAddress("http://localhost:8015/Onlinelicence/OnlineLicenceCommunicator") 
Dim client = factory.CreateChannel(address) 
.
...