Невозможно установить CookieContainer на сервисном клиенте в MonoTouch - PullRequest
1 голос
/ 24 марта 2011

У меня есть проект MonoTouch, использующий некоторый код, которым я делюсь с приложением Windows Phone 7.Этот общий код создает прокси WCF для доменной службы RIA (с использованием конечной точки / Soap), созданный с помощью SLSvcUtil.exe.Вот как выглядит код:

BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://someurl/someservice.svc");

var client = new MyDomainServiceSoapClient(binding, address);
client.CookieContainer = _cookieContainer; // <-- EXCEPTION here

Этот фрагмент кода работает в WP7, но не работает в MonoTouch, и я не могу найти почему.Исключение, которое я получаю в MonoTouch:

System.InvalidOperationException: Unable to set the CookieContainer.
Please make sure the binding contains an HttpCookieContainerBindingElement.
    at MyDomainServiceSoapClient.set_CookieContainer

Я пробовал следующие опции перед установкой CookieContainer, но все еще та же ошибка:

binding.EnableHttpCookieContainer = true;
binding.AllowCookies = true;
binding.CreateBindingElements()
    .Add(new HttpCookieContainerBindingElement()); // ??

Обновление: Я также пробовал строитьCustomBinding вручную и добавление HttpCookieContainerBindingElement, но это также не сработает.

Есть идеи?Сайт MonoTouch сообщает мне, что реализация WCF является «экспериментальной», так что, может быть, это ограничение в текущей версии MonoTouch?

Ответы [ 2 ]

0 голосов
/ 14 мая 2011

Оказывается, это была ошибка в фреймворке Mono. Начиная с MonoTouch 4.0.1 это решено, поэтому я могу без проблем использовать приведенный выше код.

0 голосов
/ 24 марта 2011

Я не знаю, как обстоят дела с SLSvcUtil.exe в качестве генератора прокси с Monotouch, но я всегда использовал его в сочетании с Silverlight, поскольку Silverlight является родным для WP7, поэтому он там работает.

В MT вам, вероятно, нужно сделать это способом MT, открыть MonoDevelop и добавить оттуда ссылку на службу, чтобы она создавалась с использованием инфраструктуры Mono и его реализации прокси WCF, а не сгенерированного кода для прокси службы Silverlight.

По крайней мере, это работает для меня и хорошо работает с сервисами WCF, использующими базовую привязку HTTP.

...