Служба WCF выставлена ​​как ASMX не будет принимать параметры - PullRequest
9 голосов
/ 01 июля 2010

У меня есть приложение сервер / клиент, разработанное в Delphi 2006. Клиент - Win32, а Сервер - веб-служба .net 1.1.

Мы находимся в процессе обновления этого проекта, но это нужно сделать небольшими шагами. Я начал с сервера и создал проект WCF в VS2010 (C # .net 4.0). Первый шаг - запустить сервер в WCF без изменения клиента. Поэтому я использовал шаблон фасада, создал интерфейс, аналогичный старому Delphi Webservice, добавил ссылку на старый .net 1.1 dll и в своей реализации я просто назвал старый код .net 1.1.

Следующий шаг обновления прокси-класса на клиенте. Это не удалось. Импортер WSDL неправильно понимал basicHttpBinding, поэтому созданный прокси-класс не смог заменить существующий прокси.

После небольшого исследования я нашел этот пост в блоге.

http://kjellsj.blogspot.com/2006/12/how-to-expose-wcf-service-also-as-asmx.html

Это сработало, ASMX WSDL ничем не отличался от старого .net 1.1, поэтому все выглядело нормально.

Но это не так. При тестировании нового сервиса я обнаружил, что все мои параметры были пустыми / нулевыми на сервере. Я попытался с Fiddler на клиенте, и параметры присутствуют в XML, который отправляется на сервер.

Так что я застрял. Любые мысли о том, как решить эту проблему, будут высоко оценены. Есть ли какой-нибудь код, который может быть интересен для просмотра, а затем сообщите мне.

Ответы [ 3 ]

1 голос
/ 07 июля 2010

Я столкнулся с подобной проблемой с веб-службой asmx ... некоторые данные теряли свои значения. Если вы используете иерархические данные, вам может потребоваться объявить внутренние или унаследованные объекты с помощью атрибута XmlInclude. Например, если у вас есть класс User, который используется в вашей службе, и подкласс Customer, вам может потребоваться объявить класс Customer для службы, если он не используется непосредственно в веб-методе. Вы бы сделали это следующим образом.

[XmlInclude(typeof(Customer))]
public class Service : WebService

Конечно, это может не иметь никакого отношения к этому, так что удачи, если это так. :)

0 голосов
/ 04 декабря 2010

Добавление атрибута KnownType к подклассам

0 голосов
/ 01 декабря 2010

Убедитесь, что имена параметров в новой службе совпадают с именами в старой службе. Если вы изменили имена параметров, они не будут отображаться из XML, поэтому в исполняемом коде будут нулевыми.

...