Ссылка на System.net на PCL и MVVMCross

Я создаю свою базовую библиотеку PCL с помощью MVVMCross и Mono с VisualStudio 2012 и стабильной версией Xamarin. У меня следующая ошибка компиляции.

Ошибка 3 «System.Net.WebHeaderCollection» не содержит определения для «Добавить», и не может быть найден метод расширения «Добавить», принимающий первый аргумент типа «System.Net.WebHeaderCollection» (отсутствует ли у вас директива using или ссылка на сборку?)

Когда пытаетесь это сделать:

string address = "http://www.test.com/;

            HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;  
            request.Method = "GET";
            request.Accept = "application/json";
            request.Headers.Add(HttpRequestHeader.Cookie, "customcookie");

HttpWebRequest хорошо упоминается.

N.B. Тот же код работает в Xamarin Studio на Mac.


person Luigi Saggese    schedule 24.05.2013    source источник


Ответы (2)


Стек PCL System.Net является портативным, что означает, что он не является полностью функциональным.

Для файлов cookie в стеке PCL .Net я считаю, что вы можете установить CookieCollection на Request, а затем вы можете проверить Cookies на Response

Если для вас этого недостаточно, вам придется использовать какую-то технику «инъекции» для реализации желаемой функциональности на каждой платформе - например, вы можете использовать плагины в mvvmcross


Я думаю, что вам может не хватать того, что в настоящее время xamarin неправильно строит PCL - это скоро изменится, но прямо сейчас xamarin строит PCL против своего полного монотач-стека или монодроида. В результате xamarin может неправильно сообщать о доступности функциональности pcl - а PCL, построенные на xamarin, определенно не переносимы - см. http://slodge.blogspot.co.uk/2013/01/almost-portable-binaries.html

person Stuart    schedule 24.05.2013
comment
это встроенный файл cookie по моему запросу. Я не читаю из ответа ... Я пытался кое-что сделать с помощью сетевого плагина в MVVMCross, но не работал ... Тот же код в Xamarin Studio на Mac отлично работает, связывая библиотеку system.net ... - person Luigi Saggese; 24.05.2013
comment
Как упомянул Стюарт, в портативной версии WebHeaderCollection отсутствует метод Add. В нем есть оператор элемента [] (msdn.microsoft.com/en-us /library/0hb8kfxw.aspx), чтобы вы могли использовать это вместо этого. Обычно, когда член отсутствует в PCL, это происходит потому, что он не поддерживается одним из целевых профилей. CookieContainer тоже работает. - person TheESJ; 25.05.2013
comment
Не могли бы вы объяснить мне, как тот же код работает на Mac с Xamarin? Наверняка профили разные, но библиотека должна быть такой же ... - person Luigi Saggese; 25.05.2013
comment
Пожалуйста, попробуйте задать полный вопрос. Я вообще не понимаю, что вы имеете в виду. - person Stuart; 25.05.2013

У меня есть последняя версия mvvmcross и Xamarin. Когда я пытаюсь установить request.CookieContainer, я получаю исключение. Описано в Xamarin bugzilla здесь и здесь

person Yuri S    schedule 24.11.2013