Ошибка C # при выполнении метода мыльного клиента - PullRequest
1 голос
/ 01 декабря 2011

Я создал клиент из файла wsdl, используя Visual Studio 2010 Pro, создал новый проект, щелкнул правой кнопкой мыши ссылку, выбрал «Добавить ссылку на службу ...», затем написал адрес веб-службы, щелкнул готово. После того, как Visual Studio сгенерировал частичные классы, затем вызвал метод с двумя аргументами:

CompanyClient client = new CompanyClient();
log[] logs = client.GetLogs(new System.DateTime(2000, 11, 22), new System.DateTime(2011, 11, 22));

Тогда есть исключение:

SystemInvalidException: There was an error reflecting 'arg0'.

Внутреннее исключение:

System.InvalidOperationException: The top XML element 'arg0' from namespace '' references distinct types System.DateTime and System.Int32. Use XML attributes to specify another XML name or namespace for the element or types.

Я написал soapserver в scala и протестировал его с SoapUI, все работает, но при разработке клиента такие проблемы возникали.

1 Ответ

2 голосов
/ 23 декабря 2011

Проблема в том, что вы, вероятно, имеете два класса arg0 (или его вариант) из двух разных пространств имен (на стороне кода), но сериализуетесь как одно и то же корневое имя + пространство имен на стороне XML. Сериализатору SOAP это не нравится, поскольку он не может понять, следует ли десериализовать данный тип как ns1.arg0 или ns2.arg0, когда он видит xml.

Проблема и решение обсуждаются здесь: http://social.msdn.microsoft.com/Forums/ar/asmxandxml/thread/e3405d68-9d48-4600-8fa0-1587aa380c47

Cheers, Анаш

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...