Я только начал делать 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и щелкните правой кнопкой мыши на «Подключенной службе», там нет «Добавить веб-службу», а только «Добавить подключенную службу», поэтому я выбрал это, как показано ниже
Затем выберите «Поставщик услуг веб-служб Microsoft WCF»
Выберите опцию, как показано ниже (я убираю галочку со всего, потому что если я добавлю больше, чем1 служба, она вылетит)
Когда я просматриваю созданный 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/'