Я не могу установить соединение со службами WCF в Xamarin - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть приложение WPF в VB.NET, которое уже разработано моими старыми коллегами. Теперь мой начальник хочет заменить текущую платформу, реализовав ту же концепцию, которая будет работать в системе Android. Итак, я решил использовать Xamarin Android .NET Standard.

Я искал способ использовать WCF и выбрасывать ошибки, прежде чем я спрашиваю, но я все еще застрял на той же ошибке.

Я установил ссылки на службы WCF накласс андроида. Учитывая решение, у меня есть 2 проекта: - MyProject и MyProject.Android

==================================================================================

WPF

Private Function EstablishConnect() As Boolean
    Try
        Dim context As InstanceContext = New InstanceContext(Me)
        svrobj = New DisplayServicesClient(context, "DisplayTcpBinding")
        Dim endpointAddress As New EndpointAddress(modUtility.ServerEndPointAddress)
        svrobj.Endpoint.Address = endpointAddress
        svrobj.Open()
        SecondDiffFromServer = DateDiff(DateInterval.Second, Now, svrobj.GetDateTime)
        Return True
    Catch ex As Exception
        WriteLog.Log(ex.ToString, True)
        Return False
    End Try
End Function

modUtility.ServerEndPointAddress получить из INI:

net.tcp:// localhost: 8002 / AppServ / WCFServices / Display

=======================================================================================

XAMARIN FORMS

private async Task<bool> EstablishConnectAsync()
{
    try
    {
        InstanceContext context = new InstanceContext(this);
        svrobj = new DisplayServicesClient(DisplayServicesClientBase.EndpointConfiguration.DisplayTcpBinding); //, DisplayServicesClientBase.EndpointConfiguration.DisplayTcpBinding
        EndpointAddress endpointAddress = new EndpointAddress(modUtility.ServerEndPointAddress);
        svrobj.Endpoint.Address = endpointAddress;
        await svrobj.OpenAsync();
        modUtility.SecondDiffFromServer = (int)(DateTime.Now - await svrobj.GetDateTimeAsync()).TotalSeconds;
        return true;
    }
    catch (Exception ex)
    {
        Device.BeginInvokeOnMainThread(() =>
        {
            ResultText.Text = "Unable to established connection with endpoint service. Ex-" + ex.Message;
        });
        return false;
    }
}

modUtility.ServerEndPointAddress получить из настроек:

net.tcp: //10.0.2.2: 8002 / AppServ / WCFServices /Дисплей

В данный момент я запускаю Android на эмуляторе.

Мой код вызывает исключение при любом вызове функции svrobj. Ниже приведена ошибка, которая выдает: -

  1. Объект связи System.ServiceModel.DuplexChannelFactory`1 [AppServ.IDisplayServices] находится не в созданном состоянии, а в состоянии открытия.

  2. Метод или операция не реализованы.

Я что-то пропустил или неправильно реализовал

...