У меня есть приложение 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
. Ниже приведена ошибка, которая выдает: -
Объект связи System.ServiceModel.DuplexChannelFactory`1 [AppServ.IDisplayServices] находится не в созданном состоянии, а в состоянии открытия.
Метод или операция не реализованы.
Я что-то пропустил или неправильно реализовал