![]() |
|
Модераторы: gambit |
![]()
|
|
| nikitao |
|
||||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: нет Всего: 26 |
Всем привет. Проблема вот какого хор-ра. Вот есть у меня такой контракт :
Теперь имею вот такую реализацию у WCF web сервиса :
В итоге получаем Exception: Базовое соединение закрыто: Соединение было неожиданно закрыто. Как понимать и как бороться ? Это сообщение отредактировал(а) nikitao - 29.11.2008, 02:33 -------------------- Жизнь - печальная штука. |
||||
|
|||||
| SpaceSpace |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 10.4.2007 Где: Самара Репутация: 2 Всего: 10 |
Ты должен типизировать возваращаемый тип, а если тебе нужно возвращать разные типы - наследуй их от базового объекта и используй атрибут KnownType
-------------------- Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение. 70-565 MCPD Enterprise 3.5 |
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: нет Всего: 26 |
У меня базовый обьект - это object и есть. А вот насчет KnownType не понял. Насколько я понял его надо к контракту данных приписывать, но вот как мне это может помочь... можно пример ?
-------------------- Жизнь - печальная штука. |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 6 Всего: 49 |
nikitao, в описание сервиса включаются только те типы, на которые он явно ссылается. В твоем случае - только object. Клиент ничего не знает о существовании DayOfWeek, и ес-но падает, получив объект DayOfWeek в респонзе. Чтобы не падал, его надо заранее предупредить о существовании типа DayOfWeek - поставить аттрибут KnownTypeAttribute/ServiceKnownTypeAttribute.
|
|||
|
||||
| SpaceSpace |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 10.4.2007 Где: Самара Репутация: 2 Всего: 10 |
PashaPash, да я об этом и говорю.
nikitao, а пример можешь и сам загуглить вот выдранный из мсдн пример, найди понятнее сам
-------------------- Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение. 70-565 MCPD Enterprise 3.5 |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 6 Всего: 49 |
SpaceSpace, да я не спорю, просто надо было как-то упомянуть про ServiceKnownType.
|
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: нет Всего: 26 |
SpaceSpace, пример с msdn я и сам скопи пастить могу.
У меня ж проблема не в DayOfWeek , я его для примера привел. У меня есть словарь настроек ключ ( строка) значение( значение). Как я его могу передать ? Я вышел из этого написав оболочку , которая передает словарь в бинарно-сериализированом виде ( еще и шифрование добавил, но эт не важно). В таком случае понятное дело проблем нет. -------------------- Жизнь - печальная штука. |
|||
|
||||
| SpaceSpace |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 10.4.2007 Где: Самара Репутация: 2 Всего: 10 |
Пробуй Это сообщение отредактировал(а) SpaceSpace - 2.12.2008, 08:50 -------------------- Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение. 70-565 MCPD Enterprise 3.5 |
|||
|
||||
| SpaceSpace |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 10.4.2007 Где: Самара Репутация: 2 Всего: 10 |
nikitao, получилось у тебя что-нить или нет?
-------------------- Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение. 70-565 MCPD Enterprise 3.5 |
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: нет Всего: 26 |
SpaceSpace, спасибо и ссори , что не отвечаю так долго.
следует, что мне надо передавать Dictonary<sting,object> , а типы , которые хранятся в object на этапе написания сервиса еще не известны. ( и бог знает что там будут за типы , со временем). А с KnowType как я понял нам нужно , чтобы все типы были известны заранее -------------------- Жизнь - печальная штука. |
|||
|
||||
| SpaceSpace |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 10.4.2007 Где: Самара Репутация: 2 Всего: 10 |
на сколько мне известно, в WCF ты должен знать тип передаваемого объекта.
и без перечисление KnownType _ не обойтись, WCF должен знать о типе который нужно сериализовать\десериализовать, и тип соответсвенно д.б. Serializable или DataContract если найдешь способ обойти это - делись. я все что знал- рассказал -------------------- Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение. 70-565 MCPD Enterprise 3.5 |
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: нет Всего: 26 |
ну я сейчас делаю так: сериализую\десириализую на стороне клиента\сервера своим кодом , а передаю byte[].
-------------------- Жизнь - печальная штука. |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 6 Всего: 49 |
nikitao, так для введения новых типов на стороне сервера тебе сейчас все равно надо обновить и сервер и клиент. Что мешает при этом обновлять сервис и дописывать Known Types для текущей версии?
|
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: нет Всего: 26 |
Сервер в большой степени используется как хранилище. Для этого Dictonary он вообще используется только как хранилище. Мне все равно все эти обьекты приходится сохранять в БД как varbinary. А вообще это не очень хорошо в любом случае дописывать помоему... -------------------- Жизнь - печальная штука. |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 6 Всего: 49 |
nikitao, не хорошо отдавать с сервера нетипизированные данные. Можно дописывать в конфиге сервиса:
<system.runtime.serialization> <dataContractSerializer> of <system.runtime.serialization> <declaredTypes> <add> of <declaredTypes> Element или прописать в ServiceKnownTypes параметр Method и строить список известных типов динамически при активации сервиса. А вообще - не сохраняй как varbinary, это тянет за собой очень много проблем, в первую очередь с версионностью. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |