WCF сокращают изменения то влияние клиенты

Да, это несимвольный журнал аварий. Проблема в том, что вызов [-SKPaymentQueue addPayment:] передал неверный указатель на платеж. Вот что говорит журнал:

Тип исключения: EXC_CRASH (SIGABRT)

и

Информация, специфичная для приложения: [1111 ]

abort () с именем

Это указывает на то, что некоторый фрагмент кода явно вызывал функцию для прерывания работы приложения. Это происходит потому, что операционная система обнаружила, что какой-то неверной информации была передана функции, и определила, что она не может продолжить работу с неверными данными, поэтому ее единственный выбор - отмена.

Обратный след показывает, какие функции были вызваны для прерывания:

Last Exception Backtrace:
 0   CoreFoundation                 0x1a4531ea4 __exceptionPreprocess + 228
 1   libobjc.A.dylib                0x1a3701a50 objc_exception_throw + 55
 2   CoreFoundation                 0x1a4438484 +[NSException raise:format:] + 115
 3   StoreKit                       0x1b860fc14 -[SKPaymentQueue addPayment:] + 675
 4   mapdocuments                   0x100e5c1e8 0x100dfc000 + 393704
 5   mapdocuments                   0x100e65ddc 0x100dfc000 + 433628

Они в обратном порядке вызова. Поэтому некоторый код в приложении или библиотеке mapdocuments вызывается в рамках StoreKit, в частности, метод -[SKPaymentQueue addPayment:]. Этот метод увидел, что переданное значение было недопустимым, и вызвало исключение. Исключение не было обнаружено при использовании блока @try / @catch, поэтому ОС прервала выполнение.

К сожалению, поскольку символы не были предоставлены, мы не знаем точную строку, которая вызвала -addPayment: с неверными данными. Однако, если вы создали приложение, у вас должны быть символы для него, и я думаю, что можно символизировать аварийный журнал, используя их. Я сам этого не сделал.

9
задан Community 23 May 2017 в 12:24
поделиться

2 ответа

Проверьте эту статью о dasBlonde: Управление версиями Контракты на Обслуживание WCF

Это перечисляет, какие изменения повредят существующие клиенты:

  1. Удалите операции
  2. Измените операционное имя
  3. Удалите операционные параметры
  4. Добавьте операционные параметры
  5. Измените операционное название параметра или тип данных
  6. Измените тип возвращаемого значения операции
  7. Измените сериализированный формат XML для типа параметра (контракт данных) или операция (контракт сообщения) путем явного использования атрибутов.NET или пользовательского кода сериализации
  8. Измените сервисные форматы кодирования деятельности (Кодирование RPC по сравнению с Литералом Документа)

Эта статья Michele объясняет более подробно, как можно разработать контракты, чтобы быть более гибкими.

16
ответ дан 4 December 2019 в 09:14
поделиться

Я думаю, что лучшая практика должна думать о контрактах поскольку небьющийся, хм, контрактах. Не изменяйте их, после того как они публикуются. Достаточно легко создать новый контракт с изменениями, которые Вы хотите, и выставить новый контракт на новой конечной точке.

0
ответ дан 4 December 2019 в 09:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: