Xamarin.Forms Добавить подключенную службу на WCF только сгенерированный асинхронный метод - PullRequest
0 голосов
/ 18 февраля 2019

Я только начал делать Xamarin.Forms с проектом .Net Standard 2.0 (PCL).Я пытаюсь использовать свой веб-сервис WCF, но так и не смог сделать это успешно.

Я создал простой WCF, как показано ниже

[ServiceContract]
public interface IWcfConnection
{        
    [OperationContract]
    string GetHelloWorld();
}

, реализация, как показано ниже

public class WcfConnection : IWcfConnection
{
    public string GetHelloWorld()
    {
        return "Hello World";
    }
}

Это очень простой WCF, когда я перехожу к своим Xamarin.Formsи щелкните правой кнопкой мыши на «Подключенной службе», там нет «Добавить веб-службу», а только «Добавить подключенную службу», поэтому я выбрал это, как показано ниже

enter image description here

Затем выберите «Поставщик услуг веб-служб Microsoft WCF»

enter image description here

Выберите опцию, как показано ниже (я убираю галочку со всего, потому что если я добавлю больше, чем1 служба, она вылетит)

enter image description here

Когда я просматриваю созданный reference.cs, создается только асинхронный метод.

public System.Threading.Tasks.Task<string> GetHelloWorldAsync()
{
    return base.Channel.GetHelloWorldAsync();
}

1) Могу ли я знать, почему создается только асинхронный режим?Это для стандарта .net и ядра, будут созданы только асинхронные сервисы?Как я где-то читал.

2) Если да, то как мне использовать веб-сервис?

В своем файле xaml.cs я сделал следующее:

WcfConnectionService.WcfConnectionClient client = new WcfConnectionService.WcfConnectionClient(new WcfConnectionService.WcfConnectionClient.EndpointConfiguration());

string abc = client.GetHelloWorldAsync().GetAwaiter().GetResult();

Но я получаю ошибку и не могу работать соответственно.Кто-нибудь есть идеи?

Необработанное исключение:

System.ServiceModel.FaultException`1 [[System.ServiceModel.ExceptionDetail, System.ServiceModel, Version = 2.0.5.0, Culture = нейтральный, PublicKeyToken= 31bf3856ad364e35]]: Ошибка в десериализации тела сообщения запроса для операции «GetHelloWorld».OperationFormatter обнаружил недопустимое тело сообщения.Ожидается найти тип узла «Элемент» с именем «GetHelloWorld» и пространством имен »http://tempuri.org/'. Найден тип узла« Элемент »с именем« GetHelloWorldAsync »и пространством имен» http://tempuri.org/'

...