Исключительная переменная инициализации с новым ConnectionSettings (); / new ConnectionConfiguration (); XamarinForms.iOS / ElasticSearch - PullRequest
0 голосов
/ 09 марта 2020

Я создавал проект Xamarin Forms и выполнил большую часть пользовательского интерфейса и передачи данных в UWP. Пользовательский интерфейс и передача данных проекта работают на всех платформах UWP, Android и iOS. В проекте используются SQL и ElasticSearch, которые впоследствии будут настроены в соответствии с его потребностями. Соединение SQL работает и загружает данные в приложение на всех трех платформах; однако ElasticSearch работает и загружает данные только в UWP и Android. При запуске приложения и загрузке данных в iOS та же ошибка возникает при инициализации переменной с помощью new ConnectionSetting(); или new ConnectionConfiguration();

. Соединение и передача данных работают для ElasticSearch как для UWP, так и для Android, но при инициализации этих переменных с или без установки их в url / index возникает та же ошибка, ТОЛЬКО на iOS. Мне не удалось решить проблему или найти решение в Интернете или с помощью документации, поэтому любая помощь очень важна для разрешения или понимания этой проблемы.

При запуске [до попытки установить связь с API (SQL / ElasticSearch) ]:

Error: this application, or a library it uses, has passed an invalid numeric value (NaN, or not-a-number) to CoreGraphics API and this value is being ignored. Please fix this problem.
If you want to see the backtrace, please set CG_NUMERICS_SHOW_BACKTRACE environmental variable.

После попытки связаться с ElasticSearch через iOS:

Сообщение об исключении:

The type initializer for 'Elasticsearch.Net.ElasticsearchNetFormatterResolver' threw an exception.

Исключение StackTrace:

at Elasticsearch.Net.LowLevelRequestResponseSerializer.Elasticsearch.Net.IInternalSerializer.TryGetJsonFormatter (Elasticsearch.Net.Utf8Json.IJsonFormatterResolver& formatterResolver) [0x00000] in C:\Source\elasticsearch-net-7.x\src\Elasticsearch.Net\Serialization\LowLevelRequestResponseSerializer.cs:36 
  at Elasticsearch.Net.DiagnosticsSerializerProxy..ctor (Elasticsearch.Net.IElasticsearchSerializer serializer, System.String purpose) [0x0001f] in C:\Source\elasticsearch-net-7.x\src\Elasticsearch.Net\Serialization\DiagnosticsSerializerProxy.cs:50 
  at Elasticsearch.Net.ConnectionConfiguration`1[T]..ctor (Elasticsearch.Net.IConnectionPool connectionPool, Elasticsearch.Net.IConnection connection, Elasticsearch.Net.IElasticsearchSerializer requestResponseSerializer) [0x000af] in C:\Source\elasticsearch-net-7.x\src\Elasticsearch.Net\Configuration\ConnectionConfiguration.cs:171 
  at Nest.ConnectionSettingsBase`1[TConnectionSettings]..ctor (Elasticsearch.Ne
t.IConnectionPool connectionPool, Elasticsearch.Net.IConnection connection, Nest.ConnectionSettings+SourceSerializerFactory sourceSerializerFactory, Nest.IPropertyMappingProvider propertyMappingProvider) [0x0002c] in C:\Source\elasticsearch-net-7.x\src\Nest\CommonAbstractions\ConnectionSettings\ConnectionSettingsBase.cs:98 
  at Nest.ConnectionSettings..ctor (Elasticsearch.Net.IConnectionPool connectionPool, Elasticsearch.Net.IConnection connection, Nest.ConnectionSettings+SourceSerializerFactory sourceSerializer, Nest.IPropertyMappingProvider propertyMappingProvider) [0x00000] in C:\Source\elasticsearch-net-7.x\src\Nest\CommonAbstractions\ConnectionSettings\ConnectionSettingsBase.cs:69 
  at Nest.ConnectionSettings..ctor (Elasticsearch.Net.IConnectionPool connectionPool, Elasticsearch.Net.IConnection connection, Nest.ConnectionSettings+SourceSerializerFactory sourceSerializer) [0x00000] in C:\Source\elasticsearch-net-7.x\src\Nest\CommonAbstractions\ConnectionSettings\ConnectionSettingsBase.cs:62 
  at Nest.C
onnectionSettings..ctor (Elasticsearch.Net.IConnectionPool connectionPool) [0x00000] in C:\Source\elasticsearch-net-7.x\src\Nest\CommonAbstractions\ConnectionSettings\ConnectionSettingsBase.cs:54 
  at Nest.ConnectionSettings..ctor (System.Uri uri) [0x00000] in C:\Source\elasticsearch-net-7.x\src\Nest\CommonAbstractions\ConnectionSettings\ConnectionSettingsBase.cs:33 
  at App.API.Get (System.String v) [0x0000f] in C:\Users\user\source\repos\App\App\App\API.cs:25

Источник исключения:

Elasticsearch.Net

Исключение InnerException:

System.TypeInitializationException: The type initializer for 'Elasticsearch.Net.Utf8Json.Resolvers.DynamicObjectResolver' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Elasticsearch.Net.Utf8Json.Resolvers.DynamicObjectResolverAllowPrivateFalseExcludeNullFalseNameMutateOriginal' threw an exception. ---> System.PlatformNotSupportedException: Operation is not supported on this platform.
  at System.Reflection.Emit.AssemblyBuilder.DefineDynamicAssembly (System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access) [0x00000] in /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/src/Xamarin.iOS/mcs/class/corlib/System.Reflection.Emit/AssemblyBuilder.pns.cs:129 
  at Elasticsearch.Net.Utf8Json.Internal.Emit.DynamicAssembly..ctor (System.String moduleName) [0x00023] in C:\Source\elasticsearch-net-7.x\src\Elasticsearch.Net\Utf8Json\Internal\Emit\DynamicAssembly.cs:73 
  at Elasticsearch.Net
.Utf8Json.Resolvers.DynamicObjectResolverAllowPrivateFalseExcludeNullFalseNameMutateOriginal..cctor () [0x00035] in C:\Source\elasticsearch-net-7.x\src\Elasticsearch.Net\Utf8Json\Resolvers\DynamicObjectResolver.cs:122 
   --- End of inner exception stack trace ---
  at (wrapper managed-to-native) System.Object.__icall_wrapper_mono_generic_class_init(intptr)
  at Elasticsearch.Net.Utf8Json.Resolvers.DynamicObjectResolver..cctor () [0x00000] in C:\Source\elasticsearch-net-7.x\src\Elasticsearch.Net\Utf8Json\Resolvers\DynamicObjectResolver.cs:44 
   --- End of inner exception stack trace ---
  at Elasticsearch.Net.ElasticsearchNetFormatterResolver+InnerResolver..ctor () [0x00011] in C:\Source\elasticsearch-net-7.x\src\Elasticsearch.Net\Serialization\Resolvers\ElasticsearchNetFormatterResolver.cs:43 
  at Elasticsearch.Net.ElasticsearchNetFormatterResolver..ctor () [0x00006] in C:\Source\elasticsearch-net-7.x\src\Elasticsearch.Net\Serialization\Resolvers\ElasticsearchNetFormatterResolver.cs:17 
  at Elasticsearch.
Net.ElasticsearchNetFormatterResolver..cctor () [0x00000] in C:\Source\elasticsearch-net-7.x\src\Elasticsearch.Net\Serialization\Resolvers\ElasticsearchNetFormatterResolver.cs:21

Исключение TargetSite:

Boolean Elasticsearch.Net.IInternalSerializer.TryGetJsonFormatter(Elasticsearch.Net.Utf8Json.IJsonFormatterResolver ByRef)

Текущая настройка / попытки:

Software:
Windows 10 / MacOS Mojave 10
XCode 11.3.1
VisualStudio Enterprise 2019 (Trial/Current) // VisualStudio Professional 2019 (Attempted) // Visual Studio Professional 2017 (Attempted)
ElasticSearch 7.5.1 (Current) // ElasticSearch 7.5 (Attempted) // ElasticSearch 7.6 (Attempted)

Nuget:
Xamarin Forms v4.5.0.356 (Current) / v4.4.0.991757 (Attempted)
Elasticsearch.Net v7.6.0 / v7.5.1 (Attempted)
NEST v7.6.0 / v7.5.1 (Attempted)
Newtonsoft.Json v12.0.3
NETStandard.Library v2.03
(Xamarin.Android.Support.V7's.etc)

Info.plist:
Deployment Target 8.0 (Current) / 9.0 (Attempted) / 10.0 (Attempted)

Попытки: я попытался обновить и понизить все и вернулся к использованию ES 7.5.1 после успешной настройки 7.6 локально таким же образом. Эта ошибка также выдается, но я не смог найти относительную информацию, чтобы исправить или обойти ее System.PlatformNotSupportedException: Operation is not supported on this platform. Я полагаю, что ошибка происходит с Serialization / JSON, но любая попытка настроить или добавить новый ConnectionPool приводит к та же проблема.

Исследование: Забыл включить мое исследование в поддержку моего предположения. Возможно, проблема связана с конфликтным отсутствием использования / зависимостью System.Reflection.Emit

https://docs.microsoft.com/en-us/xamarin/ios/internals/limitations#no -dynami c -code-generation (несколько отрывков по всей статье)

https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/custom-serialization.html (Под заказной сериализацией)

Я не новичок, но все еще многому учусь, поэтому любая помощь в решении этой проблемы очень ценится! :)

...