Как вернуть CookieContainer через WCF? - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть класс, у которого в качестве члена есть контейнер cookie (помечен как [DataMember]).Когда я пытаюсь вернуть этот класс после вызова веб-службы TCP, я получаю следующее исключение:

The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be 
used for communication because it is in the Faulted state.

Когда я удаляю атрибут [DataMember], вызов службы работает просто отлично (конечно, нет cookieконтейнер возвращается).

Мне нужно, чтобы сервисный вызов возвратил этот объект, и CookieContainer можно легко сериализовать через двоичный сериализатор.

Итак, вот мой вопрос: как мне сделать сервисвернуть CookieContainer без исключения?

Я думал о том, чтобы выполнить двоичную сериализацию на CookieContainer, после чего он может быть преобразован в строку через Convert.ToBase64String, но должен быть лучший способ сделать это.

1 Ответ

1 голос
/ 09 февраля 2012

Вам не нужно передавать CookieContainer per se - я бы сказал, что вам нужно передать данные, которые содержит контейнер cookie.В таком случае, почему бы не извлечь данные из контейнера cookie - передать их и заново создать контейнер cookie на стороне получателя

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

...