Xamarin: System.Исключение InvalidOperationException при инициализации WSDL ServiceClient

#c# #web-services #wcf #wsdl #xamarin

#c# #веб-службы #wcf #wsdl #xamarin

Вопрос:

Я пытаюсь создать приложение Xamarin, которое будет работать с веб-сервисом через WCF через WSDL. У меня есть файл .wsdl и файл .cs, сгенерированные SvcUtil с использованием файла .wsdl.

Когда я сделаю следующий:

 ServiceClient _mobileService;

    public void Initialize()
    {
        var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential)
        {
            MaxReceivedMessageSize = long.MaxValue,
            MaxBufferSize = int.MaxValue,
            MaxBufferPoolSize = long.MaxValue,
            ReceiveTimeout = TimeSpan.FromMinutes(0.5),
            SendTimeout = TimeSpan.FromMinutes(0.5),
            OpenTimeout = TimeSpan.FromMinutes(0.5),
            CloseTimeout = TimeSpan.FromMinutes(0.5),
            ReaderQuotas =
            {
                MaxArrayLength = int.MaxValue,
                MaxBytesPerRead = int.MaxValue,
                MaxDepth = int.MaxValue,
                MaxNameTableCharCount = int.MaxValue,
                MaxStringContentLength = int.MaxValue
            },
            Security = {Mode = BasicHttpSecurityMode.Transport}
        };

        var endpoint = new EndpointAddress("https://ThereIsMySite/PathToService");

        _mobileService = new ServiceClient(binding, endpoint);
        _mobileService.InnerChannel.OperationTimeout = TimeSpan.FromMinutes(1);
 

Я получил исключение:

 System.InvalidOperationException: Operation 'activateAsync' contains a message with    parameters. Strongly-typed or untyped message can be paired only with strongly-typed, untyped or void message.

 at System.ServiceModel.Dispatcher.OperationFormatter.Validate (System.ServiceModel.Description.OperationDescription od, Boolean isRpc, Boolean isEncoded) [0x00000] in <filename unknown>:0 
  at System.ServiceModel.Dispatcher.OperationFormatter..ctor (System.ServiceModel.Description.OperationDescription od, Boolean isRpc, Boolean isEncoded) [0x00000] in <filename unknown>:0 
 

Затем я попробовал тот же код в консольном проекте (.Net 4.5), и ошибки нет.

Есть ли способ заставить его работать на Xamarin?

Заранее благодарю.

Комментарии:

1. См. bugzilla.xamarin.com/show_bug.cgi?id=13074

Ответ №1:

К сожалению, базовый режим httpsecuritymode.TransportWithMessageCredential пока не поддерживается в Mono, возможно, вы захотите использовать базовый httpsecuritymode.Транспорт в данный момент.

ссылка: http://forums.xamarin.com/discussion/comment/44741/#Comment_44741