powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Client proxy: vs2010->vs2013
20 сообщений из 20, страница 1 из 1
Client proxy: vs2010->vs2013
    #38939593
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в студии 2010 все работало, когда стал компилировать в 2013 некоторые Message дают ошибку.

Что бы это могло быть?

Код: c#
1.
 An unknown exception was received. The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://tempuri.org/:nodes. The InnerException message was 'Error in line 1 position 2125. Element 'http://schemas.datacontract.org/2004/07/MessageContracts:value' contains data from a type that maps to the name 'http://schemas.datacontract.org/2004/07/MessageContracts:Klass2'. The deserializer has no knowledge of any type that maps to this name. Consider using a DataContractResolver or add the type corresponding to 'Klass2' to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding it to the list of known types passed to DataContractSerializer.'.  Please see InnerException for more details.



Какие-то изменения было, но не существенные.

И это при том, что используются MessageContracts.
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38939817
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

Ну тут явно предлагает указать KnownType.

Что могло поменяться... Не знаю, может поменялся алгоритм резольвинга (раньше делал больше), может во время переноса потерялись аттрибуты или параметры в конфиге...
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38939842
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МихаилРWinnipuh,

Ну тут явно предлагает указать KnownType.

Что могло поменяться... Не знаю, может поменялся алгоритм резольвинга (раньше делал больше), может во время переноса потерялись аттрибуты или параметры в конфиге...

самый писец в том, что он там есть и не в одном месте.
Что изменилось : была vs2010 - стала 2013 и на клиенте, и на сервере, плюс некоторые изменения в коде, которые не принципиальны для данной ошибки.
Подозреваю студию, любит ms делать изменения... но что проверять?...
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38940487
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перепроверил, такая разница в поведении:

vs2010 генерит прокси для 7 классов и добавляет к ним KnownType, vs2013 только для одного из них добавляет, а для 6 не добавляет, хотя на сервере аттрибуты есть.

Куда смотреть?

да, обнаружил такую закономерность: у тех 6 классов, для которых vs2013 не генернула KnownType одним из членов является

Object val;

Может в этом проблема? и как бороться?
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38940703
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал так:
svcutil.exe http://localhost:8082/IService/mex /noConfig

прокси содержит аттрибут KnownTypeAttribute.


?
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38940725
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

Интересно.
А можно увидеть какой-нибудь минимальный пример для воспроизведения?
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38940769
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итого:

1. WCF сервис - один и тот же, запущенный под студией, но это не так важно.
2. VS2013, NET клиент, делаю прокси через 'Update service reference' - нет аттрибутов KnownType
3. пустил руками
svcutil.exe http://localhost:8082/IService/mex /noConfig - есть аттрибут в классе

4. Пустил vs2010 с тем же клиентом, генернул прокси через 'Update service reference' - все ок, есть аттрибут.
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38940792
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МихаилРWinnipuh,

Интересно.
А можно увидеть какой-нибудь минимальный пример для воспроизведения?

Там большой сервис, просто так и не вычленишь...
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38940851
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

А хотя бы WSDL выгрузить для того сервиса, на котором проявляются сложности?
Или он сильно закрыт?

Как вариант, для воспроизведения попробовать оставить дата-контракты и пустышки сервисов (ну и убрать все поля и лишние методы). Т.е. просто повырезать лишнее (кстати, не исключено что в процессе станет понятно, в чем беда)
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38940939
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МихаилРWinnipuh,

А хотя бы WSDL выгрузить для того сервиса, на котором проявляются сложности?
Или он сильно закрыт?

Как вариант, для воспроизведения попробовать оставить дата-контракты и пустышки сервисов (ну и убрать все поля и лишние методы). Т.е. просто повырезать лишнее (кстати, не исключено что в процессе станет понятно, в чем беда)

от wsdl толку мало, с определениями методов проблем нет.
Проблема в response вызываемого метода и обнаруживается она естественно уже в рантайме, на клиенте при попытке десериализации.

Не вижу как тут личку отправлять
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38940949
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь - response, на котором ошибка десериализации, там где слово 'зима', тот тип должен быть как knowntype на обоих концах
http://rghost.net/7pvzFS4HF

Здесь кусок кода, собственно проблемный класс MetadataObject

http://codeviewer.org/view/code:4fb4
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38941326
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

Wsdl мне нужен чтобы попытаться воспроизвести ситуацию.
Как я понял, проблема ровно в одном - в том как генерирует прокси VS2013 (не расставляет KnownType). При это VS2010 и svcutil работают нормально.

Вот собственно я и хотел получить WSDL (со всеми типами, т.е. либо Sinngle wsdl, либо WSDL + xsd - их может скачать, например, svcutil) чтобы воспроизвести ситуацию.
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38941334
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МихаилРWinnipuh,

Wsdl мне нужен чтобы попытаться воспроизвести ситуацию.
Как я понял, проблема ровно в одном - в том как генерирует прокси VS2013 (не расставляет KnownType). При это VS2010 и svcutil работают нормально.

Вот собственно я и хотел получить WSDL (со всеми типами, т.е. либо Sinngle wsdl, либо WSDL + xsd - их может скачать, например, svcutil) чтобы воспроизвести ситуацию.

Ок, я понял, не вижу как отправить личку, отпишитесь мне в емейл.
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38941362
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

Написал.
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38941679
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Явное добавление члена класса указанного типа конечно решает проблему, но это плохое решение.
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38942546
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Результаты исследования и чудеса(?)

1. В Solution, где есть проект, который строит некорректный Service Reference добавил новый тестовый проект того же типа WinForms, для того же Framework 4.5.
2. В нем добавил новый Service Reference из того же сервиса.
3. Создался правильный референс(!)
4. Я его скопировал в плохой проект, заменил неймспейс - все сработало.
5. В плохом проекте удалил Service Reference, по-новой добавил, сгенерировался снова плохой(!)

Разница между этими проектами в том, что плохой проект начинали разрабатывать еще для Framework 2.0. затем перевели на 4.5.

Вывод: разница только в клиентском приложении, поскольку в течение экспериментов сервис был тот же, он был активен.

Вопрос: Что может быть в клиенте такого, что диктует студии такое поведение во время генерации Service Reference? куда рыть?
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38942583
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

Первое, что приходит на ум: что-то "сидит" в Web.config / app.config (как это ни странно, но механизм генерации в Service Reference точно его использует - он как минимум точно берет оттуда информацию о расширениях для генератора).

При миграции, например, добавляется тэг:
Код: xml
1.
2.
3.
<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>



Может что-то еще...
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38942684
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МихаилРWinnipuh,

Первое, что приходит на ум: что-то "сидит" в Web.config / app.config (как это ни странно, но механизм генерации в Service Reference точно его использует - он как минимум точно берет оттуда информацию о расширениях для генератора).

При миграции, например, добавляется тэг:
Код: xml
1.
2.
3.
<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>



Может что-то еще...

взял в лоб скопировал конфиг из плохого проекта в новый, апдейтнул - все ок, референсы корректные.
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38944161
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,
Тогда идеи пока кончились.
Единственное - изучать файл svcmap, может там чего поменялось...
...
Рейтинг: 0 / 0
Client proxy: vs2010->vs2013
    #38944312
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МихаилРWinnipuh,
Тогда идеи пока кончились.
Единственное - изучать файл svcmap, может там чего поменялось...

да я сам хренею уже.

1. сделал в том же солюшн новый проект, добавил сервер референсе - все ок
2. сравнил csproj, практически довел их до одинакового состояния - в новом все ок, в старом та же фигня
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Client proxy: vs2010->vs2013
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]