Intereting Posts
Список элементов с чередующимися цветами HTML 5 тип ввода «число» с шагом = «any» => Нет разделителя на десятичной основе в Chrome Soft-Keyboard Текстурные координаты в opengl android, показывающие обратное изображение Как антивирусное программное обеспечение программно сканирует код установленных приложений для Android (без прав root)? Как изменить цвет фона вокруг диалогового окна? Активность с фрагментами не изменяется при открытии клавиатуры Как определить размер экрана устройства (маленький, обычный, большой, xlarge) с использованием кода? Как создать библиотеку android и загрузить ее на github? Добавление внешних проектов Android и Java в проекты Android в Android Studio Пикассо и контекст Куча памяти приложений для Android продолжает расти Как добавить фотографию в нужное положение рамки? Я не помню свой пароль для debug.keystore для Android. Ошибка: выполнение команды «муравей», убедитесь, что у вас установлен мувик и добавлен его путь Загрузите файл на Amazon S3 с Android slow

Xamarin Android – создание запроса на отдых со сложным параметром (объектом) вызывает исключение, в .NET он отлично работает (с использованием фабрики каналов)

Я начинаю использовать mono droid или Xamarin для Android, поэтому моя идея состояла в том, чтобы повторно использовать большую часть кода, который я уже использовал в .NET.

Одна из вещей, в которой я нуждаюсь в приложении для Android и ios, – это сделать вызовы веб-сервисов, доступных с помощью wcf rest с кодировкой json.

Поэтому мой код прост:

WebHttpBinding webBinding = new WebHttpBinding(); EndpointAddress endPointAddress = new EndpointAddress("http://192.168.126.24:8025/Services/SecurityManagement"); ChannelFactory<ISecurityManagement> newFactory = new ChannelFactory<ISecurityManagement>(webBinding, endPointAddress); newFactory.Endpoint.Behaviors.Add(new WebHttpBehavior() { DefaultOutgoingRequestFormat = System.ServiceModel.Web.WebMessageFormat.Json, DefaultOutgoingResponseFormat = System.ServiceModel.Web.WebMessageFormat.Json }); newFactory.Endpoint.Behaviors.Add(new RestEndPointBehavior()); ISecurityManagement newProxy = newFactory.CreateChannel(); ValidateUserExistenceOutput output = newProxy.ValidateUserExistence(new ValidateUserExistenceInput() { Domain = "CRITICAL", Username = "myUserName" }); 

Достаточно просто, чтобы начать меня (по крайней мере, это была моя идея о моно, сделать в .net повторное использование в моно)

Но когда я запускаю этот код, я получаю следующее исключение исключения:

 System.NotSupportedException: Loading... 07-25 10:43:40.922 E/mono ( 1950): 07-25 10:43:40.922 E/mono ( 1950): Unhandled Exception: 07-25 10:43:40.922 E/mono ( 1950): System.NotSupportedException: Conversion from the argument parameterType 'BusinessOrchestration.SecurityManagement.InputObjects.ValidateUserExistenceInput' is not supported 07-25 10:43:40.922 E/mono ( 1950): at System.ServiceModel.Dispatcher.QueryStringConverter.ConvertValueToString (System.Object parameter, System.Type parameterType) [0x00000] in <filename unknown>:0 07-25 10:43:40.922 E/mono-rt ( 1950): at System.ServiceModel.Dispatcher.WebMessageFormatter+WebClientMessageFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unkno07-25 10:43:40.922 E/mono ( 1950): at System.ServiceModel.Dispatcher.WebMessageFormatter+WebClientMessageFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unknown>:0 07-25 10:43:40.922 E/mono ( 1950): at System.ServiceModel.Description.WebHttpBehavior+ClientPairFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unknown>:0 07-25 10:43:40.922 E/mono ( 1950): at System.ServiceModel.MonoInternal.ClientRuntimeChannel.CreateRequest (System.ServiceModel.Dispatcher.ClientOperation op, System.Object[] parameters) [0x00000] in <filename unknown>:0 07-25 10:43:40.922 E/mono ( 1950): at System.ServiceModel.MonoIn 07-25 10:43:40.922 E/mono-rt ( 1950): [ERROR] FATAL UNHANDLED EXCEPTION: System.NotSupportedException: Conversion from the argument parameterType 'BusinessOrchestration.SecurityManagement.InputObjects.ValidateUserExistenceInput' is not supported 07-25 10:43:40.922 E/mono-rt ( 1950): at System.ServiceModel.Dispatcher.QueryStringConverter.ConvertValueToString (System.Object parameter, System.Type parameterType) [0x00000] in <filename unknown>:0 07-25 10:43:40.922 E/mono-rt ( 1950): at System.ServiceModel.Dispatcher.WebMessageFormatter+WebClientMessageFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unknown>:0 07-25 10:43:40.922 E/mono-rt ( 1950): at System.ServiceModel.Description.WebHttpBehavior+ClientPairFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unknown>:0 07-25 10:43:40.922 E/mono-rt ( 1950): at System.ServiceModel.MonoInternal.ClientRuntimeChannel.CreateRequest (System.ServiceModel.Dispatcher.ClientOperation op, System.Object[] parameters) [0x00000] in <filename unknown>:0 07-25 10:43:40.922 E/mono-rt ( 1950): at System.Servic The program 'Mono' has exited with code 0 (0x0). 

Я использую тот же самый код в приложении .NET 4.5, и он отлично работает, кажется, что его ошибка при преобразовании объекта в строку (например, json string).

Должен ли он работать непосредственно в моно, поскольку он работает в .NET?

У вас, ребята, есть услуги со сложными входными объектами? Что вы используете для совершения этих звонков?

Спасибо за вашу помощь,

Луис Пиньо

Это не работает, потому что часть объекта, используемого в вашем коде, не была перенесена в Mono, так как они специфичны для Microsoft. Здесь есть информация: Статус состояния Mono

Например, это пространство имен Microsoft.EnterpriseManagement используемое для ISecurityManagement в вашем коде, вероятно, никогда не будет перенесено.

Чтобы работать как с Mono, так и с .Net, ваш код должен соответствовать стандарту .NET . Выполняется работа по согласованию структур Mono, .Net и .Net Core, чтобы они могли скомпилировать общие библиотеки и программы с меньшими различиями кода.