У меня есть приложение, которое теперь нужно развернуть в магазине приложений, так как оно постепенно становится неизбежным благодаря Gatekeeper.
Единственная проблема в том, что веб-запросы кажутся неудачными, в том смысле, что их даже не запускают.
Следующий фрагмент кода был взят из статьи Xamarin Bugzilla и успешно работает при создании для выпуска и отладки;
try
{
WebClient test = new WebClient();
Console.WriteLine("Testing SSL GET...");
string testresponse = test.DownloadString(checkFileUrl);
Console.WriteLine("testresponse = " + testresponse);
} catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.InnerException.Message);
}
Однако, когда я перехожу к сборке AppStore с песочницей и правами сетевого ввода-вывода, запрос никогда не отправляется, что подтверждено Чарльзом в режиме расшифровки без использования SSL. Из консоли выплевывается следующее:
Testing SSL GET...
Error getting response stream (Write: The authentication or decryption has failed.): SendFailure
The authentication or decryption has failed.
Кажется, это проблема, поскольку мы используем вызовы SOAP, сделанные для службы IIS, для выполнения действий, первое из которых - вход в систему. Для отладки и выпуска вход в систему работает нормально, поскольку вызовы завершены. И снова сборка AppStore даже не пытается установить контакт.
Сертификаты действительны, и ЦС установлен в моей связке ключей.
В преддверии этого я получал некоторые исключения в коде (в отладке), например:
System.Exception..ctor (message="invalid encoding specification.") in /private/tmp/source/bockbuild-mono-3.2.6/profiles/mono-mac-xamarin/build-root/mono-3.2.6/mcs/class/corlib/System/Exception.cs:81
А также
System.Exception..ctor (message="Store Root doesn't exists.") in /private/tmp/source/bockbuild-mono-3.2.6/profiles/mono-mac-xamarin/build-root/mono-3.2.6/mcs/class/corlib/System/Exception.cs:81
А также
System.Exception..ctor (message="Store CA doesn't exists.") in /private/tmp/source/bockbuild-mono-3.2.6/profiles/mono-mac-xamarin/build-root/mono-3.2.6/mcs/class/corlib/System/Exception.cs:81
Что до сих пор заставляет меня думать, что это проблема с сертификатом. Тестовый URL-адрес - это ссылка S3, а сервер входа в систему - это экземпляр EC2 с действующими сертификатами.
Приветствия .
1 ответ
Проверьте, как упаковывается ваше приложение.
По умолчанию при создании проекта (в Xamarin Studio или Visual Studio) он вызывает инструмент под названием mtouch
, который включает компоновщик для управляемого кода. Этот инструмент используется для удаления функций из библиотек классов, которые приложение не использует.
По крайней мере, mtouch
хотел бы, чтобы вы поверили.
Вариант поведения компоновщика по умолчанию - Link all assembiles
. Это будет использовать mtouch
, чтобы попытаться сделать приложение как можно меньшим путем изменения кода пользователя . Это может и приведет к нарушению кода, который использует функции таким образом, который mtouch
не может обнаружить (например, веб-службы, отражение или сериализация).
Обходной путь, который я использовал, - отключить связывание. Изменяя поведение компоновщика на Don't Link
, это гарантирует, что никакие сборки не будут изменены.
Вы можете найти меню для этого, щелкнув правой кнопкой мыши соответствующий проект и выбрав Options
:
Xamarin Studio - окно параметров проекта
Попробуйте изменить поведение компоновщика на Don't Link
(как показано выше) и выполните пересборку.
Дополнительная информация
Xamarin Guides - компоновщик с iOS
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.
http
вместоhttps
, но я думаю, если вам понадобитсяSSL
, это не решит вашу проблему