Как включить GZIP на WP в PortableClassLibrary (MVVMCross) ?? WP не может подключиться к WCF

Мне нужна небольшая помощь в включении сжатия GZip на Windows Phone в переносимой библиотеке в MVVMCross.

У меня есть служба WCF, и я пытаюсь подключиться к WP, но через несколько секунд у меня возникло исключение, что удаленный сервер - NotFound. Я попытался подключиться через silverlight, все работает нормально. По прошествии многих часов я предполагаю - спасибо скрипачу - что моя проблема в сжатии, данные сжимаются, и WP не читает их. Я также попытался отключить сжатие в конфигурации IIS, но проблема все еще сохраняется - (проверено с помощью fiddler, Accept-Encoding: gzip, delate, sdch; Content-Encoding: нет). Это с любым клиентом WindowsPhone по умолчанию с любой службой WCF по умолчанию, созданной новым проектом.

Любые идеи приветствуются. заранее спасибо

Мой код:

WcfMobileServiceClient db = новый WcfMobileServiceClient ();

db.CheckConnectionCompleted + = (отправитель, аргументы) = ›{};

db.CheckConnectionAsync (тест);

ОБНОВЛЕНИЕ: проблема с подключением WindowsPhone к WCF была в эмуляторе WP8 на VS2012 - у него изолированная сеть. Подробнее об этом здесь: http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj684580(v=vs.105).aspx


person lechu    schedule 18.02.2013    source источник
comment
Запрашивает ли WP сжатие (с использованием Accept-Encoding)? Если он этого не запрашивает, IIS не должен отправлять сжатые данные. Не могли бы вы добавить заголовки запроса / ответа к вопросу?   -  person Joachim Isaksson    schedule 18.02.2013
comment
Я не могу увидеть это со скрипачом, потому что он не показывает - не знаю почему - журналы были из SilverLight. Моя проблема связана с любым проектом WP и любым проектом WCF. Обновлено с помощью кода   -  person lechu    schedule 19.02.2013


Ответы (2)


Похоже, это не зависит от PCL и от MvvmCross - сначала выясните, как решить эту проблему в WP с помощью WCF, а затем позаботьтесь о добавлении интерфейса или уровня абстракции для использования кода сжатия в PCL.


AFAIK, это проблема только на WindowsPhone - я считаю, что Droid, Touch, WPF и RT поддерживают сжатие без необходимости в дополнительном коде.

Однако сетевой стек в Compact Framework в WindowsPhone не поддерживает GZip, поэтому вам нужно либо не запрашивать данные GZip (что плохо для производительности сети), либо вы должны предоставить свою собственную реализацию декомпрессии.

В проекте, отличном от PCL, поддержка сжатия довольно тривиальна - доступно несколько решений, например

Как только вы получите эту работу, вы сможете использовать это в проекте PCL с помощью такой техники, как внедрение зависимостей (см. Ваш предыдущий вопрос Подключение MVVMCross Portable для подключения к WCF DataService. Возможно ли это?)

person Stuart    schedule 18.02.2013

Попробуйте GZipWebClient для Windows Phone.

https://github.com/dotMorten/SharpGIS.GZipWebClient

person Ian Lee    schedule 18.02.2013