Что это за дополнительные параметры в моих методах прокси ASMX? - PullRequest
8 голосов
/ 18 февраля 2010

Если я добавлю веб-ссылку из клиента .NET 1.1 в службу WCF, сгенерированные на клиенте прокси-методы содержат дополнительный параметр, заканчивающийся суффиксом «Задано» для каждого параметра метода службы, например,

[OperationContract]
string HelloWorld(string foo, int bar);

Результат:

Service1.HelloWorld(string foo, bool fooSpecified, int bar, bool barSpecified);

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

Ответы [ 4 ]

6 голосов
/ 09 марта 2010

Это связано с различием в механизмах сериализации, используемых в веб-службах WCF и ASMX.Чтобы избежать дополнительных параметров, необходимо указать атрибут XmlSerializerFormat в ServiceContract.

для добавления, прочитайте это: http://msmvps.com/blogs/windsor/archive/2008/05/17/calling-wcf-services-from-net-1-1.aspx

2 голосов
/ 19 февраля 2010

Проблема связана с параметрами типа значения, когда они могут отсутствовать. .NET 1.1 не может указать это без параметров *specified. Им нужно установить значение true, чтобы указать, что соответствующий параметр отправляется.

1 голос
/ 18 февраля 2010

.NET 1.1 Веб-сервисы не имеют понятия null, поэтому WCF генерирует эти дополнительные свойства для вас. fooSpecified = false означает, что foo действительно равен нулю.

0 голосов
/ 18 февраля 2010

Вам, вероятно, нужно сказать, что ваши параметры обязательны

[OperationContract] 
string HelloWorld([RequiredDataParameter] string foo,
                  [RequiredDataParameter] int bar);
...