2010-02-17 2 views
8

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

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

приводит:

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

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

+0

Кстати, это не «WCF клиент», а скорее клиент ASMX из службы WCF. –

+1

Это клиент WCF так же, как вы клиент банка, фактически не являясь банком. – stovroz

ответ

6

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

для оных прочитать: http://msmvps.com/blogs/windsor/archive/2008/05/17/calling-wcf-services-from-net-1-1.aspx

+0

Некоторое чувство наконец. Большое спасибо. – stovroz

+1

"Страница не найдена". : '( –

1

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

+0

foo является _input_ к службе, указанной на клиенте. – stovroz

-1

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

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

У Google есть только два результата для RequiredDataParameter, и одна из них - эта страница, поэтому, вероятно, нет. – stovroz

2

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

Смежные вопросы